Мне интересно, Каков правильный способ вставки переменных PHP в строку?
Сюда:
echo "Welcome ".$name."!"
Или так:
echo "Welcome $name!"
Оба эти метода работают в моем PHP v5.3.5
. Последнее короче и проще, но я не уверен, что первое лучше форматирование или принято как более правильное.
Между этими двумя синтаксисами вы должны выбрать тот, который вы предпочитаете 🙂
Лично я бы пошел со своим вторым решением в таком случае (переменная интерполяция) , которую мне легче писать и читать.
Результат будет таким же; и даже если есть последствия для производительности, это не имеет значения 1 .
В качестве опоры, поэтому мой ответ немного более полный: в тот день, когда вы захотите сделать что-то вроде этого:
echo "Welcome $names!";
PHP будет интерпретировать ваш код так, как если бы вы пытались использовать переменную $names
– которая не существует.
В тот день вам нужно будет использовать {}
:
echo "Welcome {$name}s!"
Не нужно возвращаться к конкатенациям.
Также обратите внимание, что ваш первый синтаксис:
echo "Welcome ".$name."!";
Вероятно, можно оптимизировать , избегая конкатенаций, используя:
echo "Welcome ", $name, "!";
(Но, как я сказал ранее, это не имеет большого значения …)
1 – Если вы не делаете сотни тысяч конкатенаций против интерполяций – и это, вероятно, не совсем так.
Строки с двойными кавычками более элегантны, потому что вам не нужно разбивать строку каждый раз, когда вам нужно вставить переменную (как вы должны делать с однокасканными строками).
Однако, если вам нужно вставить возвращаемое значение функции, это не может быть вставлено в строку с двумя кавычками – даже если вы окружите ее фигурными скобками!
//syntax error!! //$s = "Hello {trim($world)}!" //the only option $s = "Hello " . trim($world) . "!";
Либо один хорошо. Используйте ту, которая имеет лучшую видимость для вас. И, говоря о видимости, вы также можете проверить printf .
С точки зрения того, чтобы мысли считались простыми , читабельными , последовательными и понятными (поскольку производительность здесь не имеет значения):
Использование встроенных vars в двойных кавычках может привести к сложным и запутанным ситуациям, когда вы хотите встроить свойства объекта, многомерные массивы и т. Д. То есть, как правило, при чтении встроенных vars вы не можете мгновенно убедиться в окончательном поведении того, что вы читаете ,
Вам часто нужно добавить костыли, такие как {}
и \
, что ИМО добавляет путаницу и делает конкатенационную удобочитаемость почти эквивалентной, если не лучше.
Как только вам понадобится обернуть вызов функции вокруг var, например htmlspecialchars($var)
, вам нужно переключиться на конкатенацию.
AFAIK, вы не можете вставлять константы.
В некоторых конкретных случаях «двойные кавычки с встраиванием vars» могут быть полезны, но, вообще говоря, я бы пошел на конкатенацию (используя одиночные или двойные кавычки, когда это удобно)
Я знаю, что у этого вопроса уже есть выбранный ответ, но я нашел эту статью, которая, очевидно, показывает, что интерполяция строк работает быстрее, чем конкатенация. Это может быть полезно для тех, кто все еще сомневается.
Это только вопрос вкуса.
Используйте все, что пожелаете.
Большую часть времени я использую второй, но это зависит.
Позвольте мне также предложить вам хороший редактор, который выделит переменную внутри строки
Не конкатенируйте. Это не нужно, мы запятые, поскольку эхо может принимать несколько параметров
echo "Welcome ", $name, "!";
Что касается использования одиночных или двойных кавычек, разница незначительна, вы можете проводить тесты с большим количеством строк, чтобы проверить себя.
Пойдите с первым и используйте одинарные кавычки!
Единственные ситуации, когда вы должны использовать двойные кавычки, – это когда вам нужны \r
, \n
, \t
! Накладные расходы просто не стоит использовать его в любом другом случае.
Вы также должны проверить конкатенацию переменных PHP , phpbench.com, для некоторых тестов по различным методам ведения дел.
Вы должны выбрать первый. Они не имеют никакой разницы, кроме производительности, первая из которых будет быстрой в сравнении второго.
Если переменная внутри двойной кавычки PHP занимает время для разбора переменной.
Проверьте эти одинарные кавычки или двойные кавычки для конкатенации переменных?
Это еще один пример. Есть ли сильная котировка производительности по сравнению с двойной цитатой в php?
Я не понял, почему этот ответ в ссылке выше, и почему этот ответ получил downvote.
Как я сказал то же самое.
Вы также можете посмотреть здесь
Что быстрее в PHP, одинарные или двойные кавычки?
Второй метод – лучший. больше о переменных и типах данных PHP, которые вы можете ссылаться http://www.cikkimikki.com/2015/05/php-variables-and-data-type.html
поскольку php4 вы можете использовать форматировщик строк:
$num = 5; $word = 'banana'; $format = 'can you say %d times the word %s'; echo sprintf($format, $num, $word);