Все, кто проводил тест, пришли к выводу, что использование одинарных кавычек немного лучше с точки зрения производительности. В конце концов, одинарные кавычки приводят только к конкатенации, а двойные кавычки заставляют интерпретатор анализировать всю строку на предмет переменных.
Однако дополнительная нагрузка при выполнении этого настолько мала для последних версий PHP, что в большинстве случаев делается вывод, что это не имеет особого значения.
Итак, для тех, кто занимается перформансом: используйте одинарные кавычки. Для людей типа «мне нравится мой код читабельным»: двойные кавычки намного лучше для разборчивости, как уже отмечал Флавий Стеф.
Edit: Одно но - если вы собираетесь использовать один доллар в своей строке без переменной, обязательно используйте одинарные кавычки! ( http://www.weberdev.com/get_example-3750.html указывает, что синтаксический анализ этих строк займет в 4 раза больше времени)
Это не имеет значения с точки зрения синтаксиса. Оба варианта верны. Используйте то, что вам удобнее.
Лично я чувствую себя лучше, когда использую $ string = "Привет, меня зовут $ name"
, потому что вам не нужно возиться с кавычками. Просто представьте себе сложный запрос SQL, скажем, с 10 переменными ...
Разница между одинарными и двойными кавычками в PHP заключается в том, что двойные кавычки "умные", так как они будут анализировать переменные при чтении, в то время как одинарные кавычки "тупые" и не будут пытаться анализировать любой символ в строке.
Это приводит к небольшим различиям в том, какие символы вы можете использовать; в основном, единственный символ, который нужно экранировать при использовании одинарных кавычек - это сама одинарная кавычка:
'\''
В то время как при использовании двойных кавычек вам придется экранировать другие символы:
"\$"
Но это также позволяет делать некоторые полезные вещи, такие как добавление новой строки в конец:
"my string\n"
С одинарными кавычками вам пришлось бы делать конкатенацию:
'my string' . chr(10)
'my string' . "\n"
В целом, одинарные кавычки быстрее, потому что они "тупые".
Однако обычно не стоит беспокоиться об этих проблемах, это называется преждевременной оптимизацией, и ее следует избегать.
Пара слов об оптимизации: обычно сначала нужно написать программу так, как она должна работать, а затем найти самые узкие места и устранить их. Если скорость работы со строками действительно является для вас проблемой в PHP, возможно, вам стоит подумать о переходе на другой язык.
Что касается скорости: вы, вероятно, хотите сосредоточиться на использовании памяти, а не на времени процессора. В таких случаях процессорное время можно считать довольно постоянным. Процессорное время более важно при написании алгоритмов, которые будут повторяться много раз.
Что касается конкатенаций: чем больше вы конкатенируете строк с помощью оператора dot, тем больше памяти вы будете использовать.
Рассмотрим следующее:
$str1 = 'asdf';
$str2 = 'qwer';
// this will result in more memory being allocated for temporary storage
echo $str1 . $str2;
// this will not allocate as much memory as the previous example
echo $str1;
echo $str2;
Обычно я считаю, что использование строковой интерполяции ( «Привет, меня зовут $ name»
) лучше с точки зрения удобочитаемости.
PHP довольно медленный:
Slide # 3
Так что не беспокойтесь слишком о небольших оптимизациях, подобных этой.
Однако больше сосредоточьтесь на использовании APC для кэширования вашего кода в байтовый код. Вы увидите большой прирост скорости для проекта.
Лично, если это обычная переменная или даже свойство класса, я бы написал это так:
$newVarA = "This is some text with a $variable";
$newVarB = "This is some more text, written in $settings->language";
Однако, если я используя значения массива, я объединю их в одинарные кавычки.
$newVarC = 'This is some text from a ' . $text['random'] . ' array';
Надеюсь, в этом есть смысл. Все дело в том, чтобы найти условности и придерживаться их.
$string='Hi, my name is '.$name
Это лучший способ, в смысле сочетания php и html!
или вот так:
$string="Hi, my name is $name";
Это старый способ!
Или вот так:
$string=sprintf("Hi, my name is %s",$name);
Так написал бы программист, пришедший из Visual Basic или других языков клиентского программирования!
Надеюсь, я был полезен.