#php #string-concatenation
#php #строка-конкатенация
Вопрос:
Я пытаюсь изменить жестко заданное значение переменной на динамическое, но, похоже, не удается выполнить правильную конкатенацию…
Жестко заданное значение равно…
$token = "../wp-content/themes/mytheme/styles/test/sidebar";
И я пытаюсь заменить это на…
$token = ".get_bloginfo('template_directory')."styles/test/sidebar";
Но это работает не так, как когда я жестко кодирую значение.
Чего мне не хватает?
Вот остальная часть кода (функция imagegif никогда не запускается с динамически генерируемой переменной…
$color = imagecolorallocate($img, $info["red"], $info["green"], $info["blue"]);
for ($i = $startPixel-1; $i < $endPixel; $i )
{
imagesetpixel($img, $i, 0, $color);
}
imagegif($img, $token.'.gif');
}
Ответ №1:
$token = get_bloginfo('template_directory') . "styles/test/sidebar";
.
— это оператор конкатенации, поэтому вам не хотелось бы, чтобы функция get_bloginfo() была заключена в кавычки. Предполагается, что функция возвращает строку, которая заканчивается на /
Комментарии:
1. Спасибо Фоско, я это пропустил. Также пришлось поставить «/» перед «стилями».
Ответ №2:
$token = get_bloginfo('template_directory')."styles/test/sidebar";
Это то, что вы имеете в виду? У вас была функция в виде строки вместо функции.
Ответ №3:
Из вашего кода:
$token = ".get_bloginfo('template_directory')."styles/test/sidebar";
В начале этой строки есть случайная кавычка и точка. Вы, вероятно, хотели сделать:
$token = get_bloginfo('template_directory') . "styles/test/sidebar";
Вызовы функций не могут находиться внутри строк, а оператор конкатенации ( .
) должен находиться вне строки.
Ответ №4:
В кавычки следует заключать только строки.
$token = get_bloginfo('template_directory') . "styles/test/sidebar";
Ответ №5:
Ваша конкатенация немного не в порядке.
Попробуйте: $token = get_bloginfo('template_directory') . 'styles/test/sidebar';
Комментарии:
1. «У вас немного не в порядке с конкатенацией». … вопрос не в этом?
2. Возможно, я имел в виду, что его стиль объединения немного странный. Но да, я думаю, это был вопрос;-)