Мне интересно, как правильно вставить переменные PHP в строку?
Сюда:
echo "Welcome ".$name."!"
Или так:
echo "Welcome $name!"
Оба эти метода работают по моему PHP v5.3.5
. Последнее короче и проще, но я не уверен, что первое форматирование лучше или считается более подходящим.
php
string
variables
concatenation
Веб-дизайнер
источник
источник
echo 'Welcome '.$name.'!';
Ответы:
Между этими двумя синтаксисами, вы действительно должны выбрать тот, который вы предпочитаете :-)
Лично я бы пошел с вашим вторым решением в таком случае (Переменная интерполяция) , который я считаю легче писать и читать.
Результат будет таким же; и даже если это влияет на производительность, это не имеет значения 1 .
Как примечание, мой ответ немного более полон: день, когда вы захотите сделать что-то вроде этого:
PHP будет интерпретировать ваш код так, как если бы вы пытались использовать
$names
переменную, которой не существует. - обратите внимание, что это будет работать только в том случае, если вы используете "" не "для своей строки.В этот день вам нужно будет использовать
{}
:Не нужно отступать от конкатенаций.
Также обратите внимание, что ваш первый синтаксис:
Возможно, можно оптимизировать , избегая конкатенации, используя:
(Но, как я уже говорил, это не имеет большого значения ...)
1 - Если вы не делаете сотни тысяч конкатенаций против интерполяций - и это, вероятно, не совсем так.
источник
{}
.echo
, а не где-либо еще.time php -r '$string=""; for ($i=0;$i<199999;$i++){ $string = $string.$i; } print("Done!\n");'
(конкатенация) фактически теряет примерно 300 миллисекунд (для 200 000 элементов это 1 миллисекунда на тысячу элементов в вашем наборе ...). Это статистический шум, невозможно даже измерить разницу. Учитывая, что это более читабельно,time php -r '$string=""; for ($i=0;$i<199999;$i++){ $string = "{$string}{$i}"; } print("Done!\n");'
(Интерполяция) является бесспорным победителем ...Строки в двойных кавычках более элегантны, потому что вам не нужно разбивать строку каждый раз, когда вам нужно вставить переменную (как вы должны делать со строками в одинарных кавычках).
Однако, если вам нужно вставить возвращаемое значение функции, его нельзя вставить в строку в двойных кавычках - даже если вы заключите ее в фигурные скобки!
источник
$x = function() { ...}; $string = "hello {$x(blah blah blah)}"
, который работает вокруг "ограничения".$x = 'trim'; $string = "hello {$x('blah blah blah')}";
$s = 'Hello ' . trim($world) .'!';
Попробуйте использовать одинарные кавычки, когда нечего интерполировать в строке. Это улучшит производительность и может быть использовано как соглашение для определения обоихНачиная с php4 вы можете использовать форматирование строки:
Источник: sprintf ()
источник
Либо один хорошо. Используйте тот, который лучше виден для вас. И, говоря о видимости, вы также можете проверить printf .
источник
С точки зрения создания мышления просто , читабельно , последовательно и легко понять (поскольку производительность здесь не имеет значения):
Использование встроенных переменных в двойных кавычках может привести к сложным и запутанным ситуациям, когда вы хотите встроить свойства объекта, многомерные массивы и т. Д. То есть, как правило, при чтении встроенных переменных вы не можете быть на 100% уверены в конечном поведении того, что вы читаете. ,
Вам часто нужно добавлять костыли, такие как
{}
и\
, что IMO добавляет путаницу и делает читаемость сцепления почти эквивалентной, если не лучше.Например
htmlspecialchars($var)
, как только вам нужно обернуть вызов функции в var , вы должны переключиться на конкатенацию.AFAIK, вы не можете вставлять константы.
В некоторых конкретных случаях «двойные кавычки с встраиванием переменных» могут быть полезны, но, вообще говоря, я бы пошел на конкатенацию (используя одинарные или двойные кавычки, когда это удобно)
источник
Я знаю, что на этот вопрос уже есть выбранный ответ, но я нашел эту статью, которая наглядно показывает, что интерполяция строк работает быстрее, чем конкатенация. Это может быть полезно для тех, кто все еще сомневается.
источник
Перейти с первым и использовать одинарные кавычки!
Единственные ситуации , когда вы должны использовать двойные кавычки, когда вам нужно
\r
,\n
,\t
! Накладные расходы просто не стоят того, чтобы использовать их в любом другом случае.Вам также следует проверить конкатенацию PHP-переменных phpbench.com , чтобы узнать о некоторых методах работы.
источник
\r
,\n
и так\t
как другие ответы не включали этот бит.Это только вопрос вкуса.
Используйте все, что вы хотите.
Большую часть времени я использую второй, но это зависит.
Позвольте мне также предложить вам хороший редактор, который выделит переменную внутри строки
источник
Не соединять Это не нужно, мы запятые, так как эхо может принимать несколько параметров
Что касается использования одинарных или двойных кавычек, разница незначительна, вы можете выполнить тесты с большим количеством строк, чтобы проверить себя.
источник
Вы должны выбрать первый. У них нет никакой разницы, кроме производительности, первая будет быстрее по сравнению со второй.
Если переменная внутри двойной кавычки PHP, потребуется время для разбора переменной.
Проверьте это одинарные или двойные кавычки для конкатенации переменных?
Это еще один пример. Есть ли в php одинарная кавычка для повышения производительности по сравнению с двойной кавычкой?
Я не понял, почему за этот ответ в приведенной выше ссылке проголосовали, и почему этот ответ получил отрицательный ответ.
Как я сказал то же самое.
Вы также можете посмотреть здесь
Что быстрее в PHP, одинарные или двойные кавычки?
источник
Если вы хотите выполнить
SQL
команду, а ваши переменные являются членами массива, вам не следует использовать одинарные кавычки внутри[]
массива (например, так:)['']
; например, если вы используете эту строку в качестве команды SQL, вы получитеserver error 500
:Правильная строка:
источник
Я знаю, что это старый вопрос, но я думаю, что кто-то должен упомянуть все за и против:
Лучший синтаксис : это личное предпочтение.
Производительность : без разницы. Как уже упоминалось, двойные кавычки могут быть быстрее, если использовать нереально много переменных.
Лучшее использование : одинарные кавычки (в основном). По словам @Khez, с одной цитаты можно сцепить что угодно, даже вызовы функций и переменных модификации, например , так:
echo 'hi ' . trim($name) . ($i + 1);
. Единственное , двойные кавычки могут сделать одиночные кавычки не может сделать , это использование\n
,\r
,\t
и так.Удобочитаемость : без разницы (могут применяться личные предпочтения).
Возможность записи / повторной записи / отладки : в однострочных операторах нет никакой разницы, но при работе с несколькими строками легче комментировать / раскомментировать строки во время отладки или записи. Например:
Меньше побега : одиночная кавычка. Для одинарной кавычки вам нужно экранировать только 2 символа (
'
и\
). Для двойной кавычки вам нужно экранировать 2 символа ("
,\
) и еще 3, если требуется ($
,{
и}
).Менее изменений : одинарная кавычка. Например, если у вас есть следующий код:
И вам нужно увеличить 1 до $ i, чтобы он стал похожим на:
Но для двойной кавычки вам нужно изменить это:
к этому:
Вывод : используйте то, что вы предпочитаете .
источник