Одиночные кавычки или двойные кавычки для переменной конкатенации?
Лучше ли объединить переменную (скажем, $name
) в существующую строку (скажем, $string
) следующим образом:
$string='Hi, my name is '.$name
или встроить переменную в строку следующим образом:
$string="Hi, my name is $name";
или лучше использовать такую функцию:
$string=sprintf("Hi, my name is %s",$name);
Что лучше с точки зрения процессорного времени/эффективности?
Ответы
Ответ 1
Каждый, кто сделал тест, пришел к выводу, что использование одинарных кавычек незначительно лучше. В конце одинарные кавычки приводят к простому конкатенации, в то время как двойные кавычки заставляют интерпретатор анализировать полную строку для переменных.
Однако добавленная нагрузка при этом настолько мала для последних версий PHP, что в большинстве случаев вывод заключается в том, что это не имеет большого значения.
Итак, для людей производительности: используйте одинарные кавычки. Для "i like my code readable" -people: двойные кавычки намного лучше для удобочитаемости, как уже указывал Флавиус Стеф.
Изменить: Одна вещь: если вы собираетесь использовать один доллар в своей строке без переменной, используйте одинарные кавычки точно! (http://www.weberdev.com/get_example-3750.html указывает, что для разбора этих строк потребуется 4 раза дольше)
Ответ 2
Разница между одиночными и двойными кавычками в PHP заключается в том, что двойные кавычки являются "интеллектуальными" в том, что они будут анализировать переменные при чтении, в то время как одинарные кавычки "глупые" и не будут пытаться анализировать любой символ в строке.
Это приводит к некоторым незначительным различиям в отношении символов, которые вы можете использовать; в основном, единственный символ, который вам нужно избегать при использовании одинарных кавычек, - это одиночная кавычка:
'\''
Если вы используете двойные кавычки, вам нужно избежать других символов:
"\$"
Но это также позволяет использовать некоторые отличные вещи, такие как добавление новой строки в конец:
"my string\n"
С одинарными кавычками вам нужно будет выполнить конкатенацию:
'my string' . chr(10)
'my string' . "\n"
Как правило, одинарные кавычки быстрее, потому что они "тупые".
Однако обычно не стоит беспокоиться об этих проблемах, что называется преждевременной оптимизацией, и этого следует избегать.
Несколько слов об оптимизации: обычно нужно сначала написать программу так, как она должна работать, а затем найти самые большие узкие места и исправить эти конкретные. Если скорость строки действительно является проблемой для вас в PHP, вам может потребоваться перейти на другой язык.
Что касается скорости: вы, вероятно, захотите больше сосредоточиться на использовании памяти, чем на процессорном времени. В этих случаях время CPU можно считать довольно постоянным. Время CPU более актуально при написании алгоритмов, которые будут повторяться много раз.
Что касается конкатенаций: чем больше вы объединяете строки с помощью точечного оператора, тем больше памяти вы будете использовать.
Рассмотрим это:
$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;
Ответ 3
Я обычно чувствую, что использование строковой интерполяции ("Hi, my name is $name"
) лучше с точки зрения удобочитаемости.
Ответ 4
Для производительности, как доказали другие, немного быстрее использовать одинарные кавычки, а не двойные кавычки.
Одиночные кавычки, если они применимы к науке читаемости и избегают субъективности, на самом деле добавляют больше "шума". Шум и то, как он относится к удобочитаемости, много говорится в книге "Чистый код", и можно сделать вывод, что чем больше не-пробелов вы должны видеть, тем больше он препятствует читаемости. Если применить к субъективности, большинство мест, на которые я потратил время на чтение, предпочитают одиночные двойные кавычки.
Используйте свое мнение.
$var = "My $string with $lots of $replacements."
Более читабельна, чем:
$var = 'My ' . $string . ' with ' . $lots . ' of ' . $replacements . '.';
Я признаю, что:
$var = "My string.";
Выглядит почти так же, как:
$var = 'My String.';
Однако последний вводит меньше шума, и когда есть много кода вокруг него, каждый бит помогает, не говоря уже о других преимуществах, которые вы получаете от использования одинарных кавычек.
В конце концов, я предпочитаю KISS. Используйте одинарные кавычки, если вам не нужны двойные кавычки. Простое соглашение, которое легче печатать, проще в обслуживании, проще разбирать и читать легче.
Ответ 5
Это не имеет значения с точки зрения синтаксиса. Оба варианта верны. Используйте то, что вам удобно.
Лично я чувствую себя лучше при использовании $string="Hi, my name is $name"
, потому что вам не нужно возиться с кавычками. Просто изобразите сложный SQL-запрос, скажем, из 10 переменных...
Ответ 6
PHP довольно медленный:
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-088-introduction-to-c-memory-management-and-c-object-oriented-programming-january-iap-2010/lecture-notes/MIT6_088IAP10_lec01.pdf
Слайд # 3
Поэтому не беспокойтесь о небольших оптимизациях, подобных этим.
Сфокусируйтесь больше на использовании APC для кэширования кода в байтовый код. Вы увидите большой прирост скорости для проекта.
Ответ 7
Лично, если это просто нормальная переменная или даже свойство класса, я бы написал ее вот так:
$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';
Надеюсь, это имеет смысл. Все дело в том, чтобы найти конвенцию и придерживаться ее.
Ответ 8
Мой девиз и ответ: Оставьте его компиляторам для написания машинного кода. Я скажу вам, что я имею в виду...
Используйте одинарные кавычки, когда вам не нужно включать переменные PHP, иначе используйте двойные кавычки.
Не беспокойтесь о производительности, просто используйте APC на производственных серверах. Вместо этого сосредоточьтесь на написании наиболее удобного кода; использовать комментарии, двойные кавычки и т.д., даже если они могут замедлить работу кода. Любая оптимизация, которая уменьшает ремонтопригодность/удобочитаемость кода, является плохим, оставьте ее в кодеках-кодеках и компиляторах, чтобы превратить ваш код в машинный код, не делайте этого сами... обфускация исходного кода из-за оптимизации срабатывает.
Ответ 9
Одиночная кавычка лучше, чем двойная кавычка, при конкатенации переменных.
нажмите ссылку для лучшего понимания...
http://www.codeforest.net/php-myth-busters-using-single-quotes-on-string-is-faster-then-double-quotes
Ответ 10
$string='Hi, my name is '.$name
Это лучший способ, в смысле комбинации php и html!
или вот так:
$string="Hi, my name is $name";
Это старый способ!
Или вот так:
$string=sprintf("Hi, my name is %s",$name);
Это то, что написал программист из Visual Basic или других языков программирования клиентов!
Надеюсь, я был полезен.