PHP: использование переменной внутри двойных кавычек
пожалуйста, проверьте следующий код.
$imagebaseurl = 'support/content_editor/uploads/$name';
$imagebaseurl
- это переменная, содержащая ссылку на мою папку с изображениями (загружает), и внутри папки у меня есть другие папки, имена которых называются после имени моего пользователя. например: у меня есть пользователь, имя которого - john, поэтому ссылка должна выглядеть так: > support/content_editor/uploads/john
.
Основная идея - когда любой пользователь входит в систему и просматривает свою галерею изображений, я хочу занести его в свою собственную галерею, которая в основном названа в честь его имени.
Когда он посетит галерею, значение $name
в ссылке будет получено от имени пользователя (от сеанса). Теперь проблема в том, что вы, вероятно, уже поняли, что размещение $name
в приведенной выше ссылке неверно, и поэтому она не работает. Я получаю весь этот URL > (support/content_editor/uploads/$name) вместо (support/content_editor/uploads/john)
Теперь не могли бы вы рассказать мне, как использовать $name
в этом $imagebaseurl = 'support/content_editor/uploads/$name';
Ответы
Ответ 1
$imagebaseurl = 'support/content_editor/uploads/' . $name;
или
$imagebaseurl = "support/content_editor/uploads/{$name}";
Обратите внимание, что если вы используете двойные кавычки, вы также можете написать выше:
$imagebaseurl = "support/content_editor/uploads/$name";
Хорошо, хотя привыкнуть использовать {$...}
в двойных кавычках, а не только $...
, когда вам нужно вставить переменную в строку, где это не очевидно для PHP, какая часть является переменной и какая часть является строкой.
Если вы хотите получить лучшую производительность, используйте конкатенацию строк с одинарными кавычками.
Ответ 2
Я не мог больше не соглашаться с предыдущим сообщением.
Я бы почти зашел так далеко, чтобы назвать это плохой практикой, чтобы использовать
$varname = 'EXAMPLE';
$fulltext = "This is an $varname";
Более опытный, по моему опыту, использовать моего хорошего друга, известного как sprintf();
define('CONST_NAME', 'This is an example of a better %s');
define('EXAMPLE', sprintf(CONST_NAME, 'practice'));
echo EXAMPLE;
Почему? Первое может показаться более ясным, но второе гораздо более пригодно для повторного использования. Я рекомендую использовать sprintf по сравнению с маской двойной цитаты php, которая существует, буквально, ни на одном другом языке.
http://php.net/manual/en/function.sprintf.php
Это также практика, очень похожая на С# и многие другие языки.
Смотрите также: https://msdn.microsoft.com/en-us/library/system.string.format(v=vs.110).aspx