Intereting Posts
Facebook «Like» создает «При обновлении страницы произошла внутренняя ошибка». PHP голосование, по одному голосу за каждый IP-адрес в день: нужна кодовая помощь Шаблон проектирования для развертки / фильтра Пользовательский репозиторий Doctrine с формой objectselect Изображения PNG PNG загружаются с помощью mime «image / jpeg» на KCFINDER 3.12 MySQL пропускает первую строку PHP – хранить информацию без базы данных NO Получить идентификатор продукта и тип продукта в пурпуре? Закрытие в PHP … что, собственно, они и когда вам нужно их использовать? Как использовать Imagick для слияния и маскировки изображений? Как проверить, существует ли каталог через PHP? Запретить ввод даты и времени в базу данных Выполнение выбора и обновления в одном запросе Как отслеживать время пользователя на сайте предотвращать автоматическое добавление косой черты при использовании parse_str

PHP – конкатенировать или напрямую вставлять переменные в строку

Мне интересно, Каков правильный способ вставки переменных 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, "!"; 

Что касается использования одиночных или двойных кавычек, разница незначительна, вы можете проводить тесты с большим количеством строк, чтобы проверить себя.

Пойдите с первым и используйте одинарные кавычки!

  1. Это легче читать, то есть другие программисты будут знать, что происходит
  2. Он работает немного быстрее, способ создания кодов операций, когда PHP анализирует ваш исходный код, в любом случае это все равно, так что дайте ему руку помощи!
  3. Если вы также используете одиночные кавычки вместо двойных кавычек, вы еще больше повысите свою производительность.

Единственные ситуации, когда вы должны использовать двойные кавычки, – это когда вам нужны \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);