Одинарные кавычки или двойные кавычки для переменной конкатенации? [закрытый]

22
задан David 16 August 2011 в 19:49
поделиться

7 ответов

Все, кто проводил тест, пришли к выводу, что использование одинарных кавычек немного лучше с точки зрения производительности. В конце концов, одинарные кавычки приводят только к конкатенации, а двойные кавычки заставляют интерпретатор анализировать всю строку на предмет переменных.

Однако дополнительная нагрузка при выполнении этого настолько мала для последних версий PHP, что в большинстве случаев делается вывод, что это не имеет особого значения.

Итак, для тех, кто занимается перформансом: используйте одинарные кавычки. Для людей типа «мне нравится мой код читабельным»: двойные кавычки намного лучше для разборчивости, как уже отмечал Флавий Стеф.

Edit: Одно но - если вы собираетесь использовать один доллар в своей строке без переменной, обязательно используйте одинарные кавычки! ( http://www.weberdev.com/get_example-3750.html указывает, что синтаксический анализ этих строк займет в 4 раза больше времени)

25
ответ дан 29 November 2019 в 04:33
поделиться

Это не имеет значения с точки зрения синтаксиса. Оба варианта верны. Используйте то, что вам удобнее.

Лично я чувствую себя лучше, когда использую $ string = "Привет, меня зовут $ name" , потому что вам не нужно возиться с кавычками. Просто представьте себе сложный запрос SQL, скажем, с 10 переменными ...

0
ответ дан 29 November 2019 в 04:33
поделиться

Разница между одинарными и двойными кавычками в 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;
11
ответ дан 29 November 2019 в 04:33
поделиться

Обычно я считаю, что использование строковой интерполяции ( «Привет, меня зовут $ name» ) лучше с точки зрения удобочитаемости.

8
ответ дан 29 November 2019 в 04:33
поделиться

PHP довольно медленный:

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-088-introduction-to-c-memory-management-and -c-объектно-ориентированное программирование-январь-iap-2010 / lecture-notes / MIT6_088IAP10_lec01.pdf

Slide # 3

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

Однако больше сосредоточьтесь на использовании APC для кэширования вашего кода в байтовый код. Вы увидите большой прирост скорости для проекта.

0
ответ дан 29 November 2019 в 04:33
поделиться

Лично, если это обычная переменная или даже свойство класса, я бы написал это так:

$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';

Надеюсь, в этом есть смысл. Все дело в том, чтобы найти условности и придерживаться их.

0
ответ дан 29 November 2019 в 04:33
поделиться
$string='Hi, my name is '.$name

Это лучший способ, в смысле сочетания php и html!

или вот так:

$string="Hi, my name is $name";

Это старый способ!

Или вот так:

$string=sprintf("Hi, my name is %s",$name);

Так написал бы программист, пришедший из Visual Basic или других языков клиентского программирования!

Надеюсь, я был полезен.

-5
ответ дан 29 November 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: