PHP – конкатенировать или напрямую вставлять переменные в строку
Мне интересно, Каков правильный способ вставки переменных PHP в строку?
Оба эти метода работают в моем PHP v5.3.5 . Последнее короче и проще, но я не уверен, что первое лучше форматирование или принято как более правильное.
Между этими двумя синтаксисами вы должны выбрать тот, который вы предпочитаете 🙂
Лично я бы пошел со своим вторым решением в таком случае (переменная интерполяция) , которую мне легче писать и читать.
Результат будет таким же; и даже если есть последствия для производительности, это не имеет значения 1 .
В качестве опоры, поэтому мой ответ немного более полный: в тот день, когда вы захотите сделать что-то вроде этого:
PHP будет интерпретировать ваш код так, как если бы вы пытались использовать переменную $names – которая не существует.
В тот день вам нужно будет использовать <> :
Не нужно возвращаться к конкатенациям.
Также обратите внимание, что ваш первый синтаксис:
Вероятно, можно оптимизировать , избегая конкатенаций, используя:
(Но, как я сказал ранее, это не имеет большого значения …)
1 – Если вы не делаете сотни тысяч конкатенаций против интерполяций – и это, вероятно, не совсем так.
Строки с двойными кавычками более элегантны, потому что вам не нужно разбивать строку каждый раз, когда вам нужно вставить переменную (как вы должны делать с однокасканными строками).
Однако, если вам нужно вставить возвращаемое значение функции, это не может быть вставлено в строку с двумя кавычками – даже если вы окружите ее фигурными скобками!
//syntax error!! //$s = "Hello !" //the only option $s = "Hello " . trim($world) . "!";
Либо один хорошо. Используйте ту, которая имеет лучшую видимость для вас. И, говоря о видимости, вы также можете проверить printf .
С точки зрения того, чтобы мысли считались простыми , читабельными , последовательными и понятными (поскольку производительность здесь не имеет значения):
- Использование встроенных vars в двойных кавычках может привести к сложным и запутанным ситуациям, когда вы хотите встроить свойства объекта, многомерные массивы и т. Д. То есть, как правило, при чтении встроенных vars вы не можете мгновенно убедиться в окончательном поведении того, что вы читаете ,
- Вам часто нужно добавить костыли, такие как <> и \ , что ИМО добавляет путаницу и делает конкатенационную удобочитаемость почти эквивалентной, если не лучше.
- Как только вам понадобится обернуть вызов функции вокруг var, например htmlspecialchars($var) , вам нужно переключиться на конкатенацию.
- AFAIK, вы не можете вставлять константы.
В некоторых конкретных случаях «двойные кавычки с встраиванием vars» могут быть полезны, но, вообще говоря, я бы пошел на конкатенацию (используя одиночные или двойные кавычки, когда это удобно)
Я знаю, что у этого вопроса уже есть выбранный ответ, но я нашел эту статью, которая, очевидно, показывает, что интерполяция строк работает быстрее, чем конкатенация. Это может быть полезно для тех, кто все еще сомневается.
Это только вопрос вкуса.
Используйте все, что пожелаете.
Большую часть времени я использую второй, но это зависит.
Позвольте мне также предложить вам хороший редактор, который выделит переменную внутри строки
Не конкатенируйте. Это не нужно, мы запятые, поскольку эхо может принимать несколько параметров
Что касается использования одиночных или двойных кавычек, разница незначительна, вы можете проводить тесты с большим количеством строк, чтобы проверить себя.
Пойдите с первым и используйте одинарные кавычки!
- Это легче читать, то есть другие программисты будут знать, что происходит
- Он работает немного быстрее, способ создания кодов операций, когда PHP анализирует ваш исходный код, в любом случае это все равно, так что дайте ему руку помощи!
- Если вы также используете одиночные кавычки вместо двойных кавычек, вы еще больше повысите свою производительность.
Единственные ситуации, когда вы должны использовать двойные кавычки, – это когда вам нужны \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);
PHP — объединение или прямая вставка переменных в строку
Мне интересно, как правильно вставлять переменные PHP в строку?
echo «Welcome «.$name.»!»
Или так:
echo «Welcome $name!»
Оба этих метода работают в моем PHP v5.3.5. Последний короче и проще, но я не уверен, что первый лучше форматируется или воспринимается как более правильный.
Ответ 1
Между этими двумя синтаксисами вы должны выбрать тот, который вам больше нравится 🙂 Лично я бы выбрал второе решение ( п еременная интерполяция), которое я нахожу более простым как для записи, так и для чтения.
Результат будет тот же самый; и даже если есть последствия для производительности, они не будут иметь значения. В качестве примечания, чтобы мой ответ был немного более полным:
echo «Welcome $names!»;
PHP будет интерпретировать ваш код так, как будто вы пытаетесь использовать переменную $names, которой не существует. Обратите внимание, что это сработает, только если вы используете «», а не » для вашей строки. В этом случае вам нужно будет использовать <>:
echo «Welcome s!»
Нет необходимости возвращаться к конкатенации. Также обратите внимание, что ваш первый синтаксис:
echo «Welcome «.$name.»!»;
Возможно, его можно оптимизировать, избегая конкатенации, используя:
echo «Welcome «, $name, «!»;
Ответ 2
Строки с двойными кавычками более элегантны, поскольку вам не нужно разбивать строку каждый раз, когда вам нужно вставить переменную (как это нужно делать со строками с одинарными кавычками). Однако, если вам нужно вставить возвращаемое значение функции, его нельзя вставить в строку с двойными кавычками — даже если вы окружите его скобками!
// синтаксическая ошибка!!
//$s = «Hello !»
// единственный вариант
$s = «Hello » . trim($world) . «!»;
Ответ 3
Начиная с php4 , вы можете использовать строковый форматор:
$num = 5;
$word = ‘banana’;
$format = ‘можете ли вы произнести %d раз, слово %s ‘;
echo sprintf($format, $num, $word);
Ответ 4
С точки зрения обеспечения простоты, читабельности, последовательности и легкости понимания (поскольку производительность здесь не имеет значения):
Использование встроенных параметров в двойных кавычках может привести к сложным и запутанным ситуациям, когда вы хотите встроить свойства объектов, многомерные массивы и т. д. То есть обычно при чтении встроенных переменных вы не можете быть на 100% уверены в конечном поведении того, что вы читаете.
Часто приходится использовать такие костыли, как <> и \, что вносит путаницу и делает читаемость конкатенации почти эквивалентной, если не лучше.
Как только вам нужно обернуть вызов функции вокруг var, например, htmlspecialchars($var), вы должны перейти на конкатенацию. Также вы не можете встраивать константы.
В некоторых специфических случаях «двойные кавычки со вставкой vars» могут быть полезны, но в целом я бы выбрал конкатенацию (используя одинарные или двойные кавычки, когда это удобно).
Ответ 5
Выбирайте первое и используйте одинарные кавычки!
Это легче читать, а значит, другие программисты будут знать, что происходит.
Это работает немного быстрее, так как опкоды создаются, когда PHP разбирает ваш исходный код, но в любом случае он это сделает, так что протяните ему руку помощи!
Если вы также будете использовать одинарные кавычки вместо двойных, вы еще больше увеличите производительность.
Единственная ситуация, когда вы должны использовать двойные кавычки, — это когда вам нужны \r, \n, \t! В других случаях использование двойных кавычек не стоит того.
Вы также должны проверить PHP конкатенацию переменных, используя phpbench.com для некоторых сравнительных тестов различных методов.
Ответ 6
Если вы хотите выполнить команду SQL, а ваши переменные являются членами массива, то вы не должны использовать одинарные кавычки внутри [] массива (как здесь: [»]); например, если вы используете эту строку в качестве команды SQL, вы получите серверную ошибку 500:
$con = mysqli_connect(‘ServerName’, ‘dbUsername’, ‘dbPassword’);
mysqli_select_db($con, ‘dbName’)
//’ID’ — поле с автоматическим инкрементом.
$sql = «INSERT INTO sampleTable (ID, TraceNo) VALUES (»,’$sampleArray[‘TraceNo’]’)»;
mysqli_query($con, $sql)
Правильная строка:
//’ID’ — поле с автоматическим инкрементом.
$sql = «INSERT INTO sampleTable (ID, TraceNo) VALUES (»,’$sampleArray[TraceNo]’)»;
Ответ 7
- Лучший синтаксис: Это личное предпочтение.
- Производительность: Никакой разницы. Как многие упоминали, двойная кавычка может быть быстрее, если использовать нереально много переменных.
- Лучшее использование: Одинарная кавычка (в основном). С одинарной кавычкой вы можете объединить что угодно, даже вызовы функций и изменение переменных, например: echo ‘hi ‘ . trim($name) . ($i + 1);. Единственное, что может сделать двойная кавычка, чего не может сделать одинарная , — это использование \n, \r, \t и т. п.
- Читабельность: Нет разницы (возможно, это личные предпочтения).
- Удобство записи/перезаписи/отладки: В 1-строчных утверждениях разницы нет, но , когда речь идет о нескольких строках, проще комментировать/ не комментировать строки при отладке или написании. Например:
- Меньше escape-последовательностей: Одинарная кавычка. Для одинарной кавычки нужно экранировать только 2 символа (‘ и \). Для двойной кавычки нужно экранировать 2 символа («, \) и еще 3, если требуется ($, < и >).
- Меньше изменений: Одинарная кавычка. Например, если у вас есть следующий код:
- Заключение: Используйте то, что вам больше нравится.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.