PHP-конкатенация или прямая вставка переменных в строку
мне интересно, Как правильно вставлять переменные PHP в строку?
таким образом:
echo "Welcome ".$name."!"
или так:
echo "Welcome $name!"
оба эти метода работают в моем PHP v5.3.5. Последнее короче и проще, но я не уверен, что первое лучше форматирование или принято как более правильное.
11 ответов:
между этими двумя синтаксисами, вы действительно должны выбрать тот, который вы предпочитаете :-)
лично я бы пошел с вашим вторым решением в таком случае (переменной интерполяции), который я нахожу легче как писать, так и читать.
результат будет таким же; и даже если есть последствия для производительности, они не будут иметь значения 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 вы не можете быть мгновенно на 100% уверены в финале поведение того, что Вы читаете.
вам часто нужно добавить костыли, такие как
{}и\, что IMO добавляет путаницу и делает читаемость конкатенации почти эквивалентной, если не лучше.как только вам нужно обернуть вызов функции вокруг var, например
htmlspecialchars($var), вы должны переключиться на конкатенацию.AFAIK, вы не можете вставлять константы.
В некоторых конкретные случаи, "двойные кавычки с вложением vars" могут быть полезны, но, вообще говоря, я бы пошел на объединение (используя одинарные или двойные кавычки, когда удобно)
Я знаю, что этот вопрос уже выбрали ответ, но я нашел в этой статье это, очевидно, показывает, что строковая интерполяция работает быстрее, чем конкатенация. Это может быть полезно для тех, кто все еще сомневается.
начиная с php4 вы можете использовать строковый форматер:
$num = 5; $word = 'banana'; $format = 'can you say %d times the word %s'; echo sprintf($format, $num, $word);
пойти с первым и использовать одинарные кавычки!
- это легче читать, то есть другие программисты будут знать, что происходит
- он работает немного быстрее, как создаются опкоды, когда PHP анализирует ваш исходный код, он в основном собирается сделать это в любом случае, так что дайте ему руку помощи!
- если вы также используете одинарные кавычки вместо двойных кавычек, вы еще больше повысите свою производительность.
только ситуации, когда вы должны использовать двойные кавычки, это когда вам нужно
\r,\n,\t! Накладные расходы просто не стоит использовать его в любом другом случае.вы также должны проверить PHP переменная конкатенация, phpbench.com для некоторых тестов по различным методам выполнения вещей.
Это только дело вкуса.
Используйте все, что пожелаете.большую часть времени я использую второй, но это зависит.
позвольте мне предложить вам также получить себе хороший редактор, который будет выделять переменную внутри строки
не сцепить. Это не нужно, запятые США, как эхо может принимать несколько параметров
echo "Welcome ", $name, "!";Что касается использования одинарных или двойных кавычек разница незначительна, вы можете сделать тесты с большим количеством строк, чтобы проверить для себя.
вы должны выбрать первый. Они не имеют никакой разницы, кроме производительности первый будет быстрым в сравнении второго.
Если переменная внутри двойной кавычки PHP занимает время для разбора переменной.
зацените одинарные кавычки или двойные кавычки для переменных конкатенации?
Это еще один пример есть ли преимущество в производительности одинарная кавычка против двойной кавычки в php?
Я не понимаю, почему этот ответ в ссылке выше получить upvoted и почему этот ответ получил downvote.
Как я уже сказал то же самое.
вы можете посмотреть здесь также
я знаю, что это старый вопрос, но я думаю, что кто-то должен упомянуть все плюсы и минусы:
Лучше Синтаксис: это личные предпочтения.
производительность: никакой разницы. Как уже упоминалось, двойная кавычка может быть быстрее, если использовать нереалистично много переменных.
Лучшее Использование: одиночная цитата (в основном). Как сказал @Khez, с помощью одной кавычки вы можете объединить все, даже вызовы функций и переменные модификации, например, так:
echo 'hi ' . trim($name) . ($i + 1);. Единственное, что двойная кавычка может сделать, что одинарная кавычка не может сделать, это использование\n,\r,\tи так.читабельности: нет разницы (могут применяться личные предпочтения).
Права На Запись/Восстановление Права На Запись/Отладки: в 1-строчных операторах нет никакой разницы, но при работе с несколькими строками легче комментировать/раскомментировать строки во время отладки или записи. Для пример:
$q = 'SELECT ' . 't1.col1 ' . ',t2.col2 ' . //',t3.col3 ' . 'FROM tbl1 AS t1 ' . 'LEFT JOIN tbl2 AS t2 ON t2.col2 = t1.col1 ' . //'LEFT JOIN tbl3 AS t3 ON t3.col3 = t2.col2 ' . 'WHERE t1.col1 = ' . $x . ' ' . ' AND t2.col2 = ' . $y . ' ' . //' AND t3.col3 = ' . $z . ' ' . 'ORDER BY t1.col1 ASC ' . 'LIMIT 10';Меньше Спасаясь: одинарная кавычка. Для одиночной кавычки вам нужно бежать только 2 символа (
'и\). Для двойной кавычки вам нужно бежать 2 символа (",\) и еще 3 при необходимости ($,{и}).Меньше Изменений: одинарная кавычка. Например, если у вас есть следующий код:
echo 'Number ' . $i . '!';и вам нужно увеличить 1 до $i, чтобы он стал нравится:
echo 'Number ' . ($i + 1) . '!';но для двойной кавычки, вам нужно будет изменить это:
echo "Number $i!";для этого:
echo "Number " . ($i + 1) . "!";
вывод:использовать то, что вы предпочитаете.
Comments