Лучше ли объединить переменную (скажем, $name
) в существующую строку (скажем, $string
) следующим образом:
$string='Hi, my name is '.$name
или встроить переменную в строку следующим образом:
$string="Hi, my name is $name";
или лучше использовать такую функцию:
$string=sprintf("Hi, my name is %s",$name);
Что лучше с точки зрения процессорного времени / эффективности?
Каждый, кто сделал тест, пришел к выводу, что использование одинарных кавычек незначительно улучшает производительность. В конце одинарные кавычки приводят к простому конкатенации, в то время как двойные кавычки заставляют интерпретатор анализировать полную строку для переменных.
Однако добавленная нагрузка при этом настолько мала для последних версий PHP, что в большинстве случаев вывод заключается в том, что это не имеет большого значения.
Итак, для людей производительности: используйте одинарные кавычки. Для «мне нравится мой читаемый код» – люди: двойные кавычки намного лучше для удобочитаемости, как уже указывал Флавиус Стеф.
Изменить: Одна вещь. Если вы собираетесь использовать один доллар в своей строке без переменной, используйте одинарные кавычки точно! ( http://www.weberdev.com/get_example-3750.html указывает, что для разбора этих строк потребуется 4 раза)
Разница между одиночными и двойными кавычками в PHP заключается в том, что двойные кавычки являются «интеллектуальными» в том, что они будут анализировать переменные при чтении, в то время как одинарные кавычки «тупые» и не будут пытаться анализировать любой символ в строке.
Это приводит к некоторым незначительным различиям в отношении того, какие символы вы можете использовать; в основном, единственный персонаж, которого нужно избегать при использовании одинарных кавычек, – это одиночная кавычка:
'\''
Хотя, если вы используете двойные кавычки, вам нужно избежать других символов:
"\$"
Но это также позволяет использовать некоторые отличные вещи, такие как добавление новой строки в конец:
"my string\n"
С одинарными кавычками вам нужно будет сделать конкатенацию:
'my string' . chr(10) 'my string' . "\n"
Как правило, одинарные кавычки быстрее, потому что они «тупые».
Однако обычно не стоит беспокоиться об этих проблемах, что называется преждевременной оптимизацией, и этого следует избегать.
Несколько слов об оптимизации: обычно нужно сначала написать программу так, как она должна работать, а затем найти самые большие узкие места и исправить эти конкретные. Если скорость строки действительно является проблемой для вас в PHP, вам может потребоваться перейти на другой язык.
Что касается скорости: вы, вероятно, захотите больше сосредоточиться на использовании памяти, чем на процессорном времени. В этих случаях время 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;
Обычно я считаю, что использование интерполяции строк ( "Hi, my name is $name"
) лучше с точки зрения разборчивости.
Для производительности, как доказали другие, чуть быстрее использовать одинарные кавычки, а не двойные кавычки.
Одиночные кавычки, если они применимы к науке о удобочитаемости и вдали от субъективности, на самом деле добавляют больше «шума». Шум и то, как он относится к удобочитаемости, много говорится в книге «Чистый код», и можно сделать вывод, что чем больше не-пробелов вы должны видеть, тем больше он препятствует читаемости. Если применить к субъективности, большинство мест, на которые я потратил время на чтение, предпочитают одиночные двойные кавычки.
Используйте свое мнение.
$var = "My $string with $lots of $replacements."
Является гораздо более читаемым, чем:
$var = 'My ' . $string . ' with ' . $lots . ' of ' . $replacements . '.';
Я признаю, что:
$var = "My string.";
Выглядит почти так же, как:
$var = 'My String.';
Однако последний вводит меньше шума, и когда вокруг него много кода, каждый бит помогает, не говоря уже о других преимуществах, которые вы получаете от использования одинарных кавычек.
В конце концов, я предпочитаю KISS. Используйте одинарные кавычки, если вам не нужны двойные кавычки. Простое соглашение, которое легче печатать, проще в обслуживании, проще разбирать и читать легче.
Это не имеет значения с точки зрения синтаксиса. Оба варианта верны. Используйте то, что чувствуете себя более комфортно.
Лично я чувствую себя лучше при использовании $string="Hi, my name is $name"
, потому что вам не нужно возиться с кавычками. Просто изобразите сложный SQL-запрос, скажем, из 10 переменных …
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 / аудиторные примечания / MIT6_088IAP10_lec01.pdf
Слайд 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';
Надеюсь, это имеет смысл. Все дело в том, чтобы найти конвенцию и придерживаться ее.
Мой девиз и ответ: Оставьте его компиляторам для написания машинного кода. Я скажу вам, что я имею в виду …
Используйте одинарные кавычки, когда вам не нужно включать переменные PHP, в противном случае используйте двойные кавычки. Не беспокойтесь о производительности, просто используйте APC на производственных серверах. Вместо этого сосредоточьтесь на написании наиболее удобного кода; использовать комментарии, двойные кавычки и т. д., даже если они могут замедлить работу кода. Любая оптимизация, которая уменьшает ремонтопригодность / удобочитаемость кода, является плохим, оставьте ее в кодеках-кодеках и компиляторах, чтобы превратить ваш код в машинный код, не делайте этого сами … обфускация исходного кода из-за оптимизации срабатывает.
Единственная строка с кавычками – лучший вариант, чем двойная кавычка, при конкатенации переменных. нажмите ссылку для лучшего понимания …
$string='Hi, my name is '.$name
Это лучший способ, в смысле комбинации php и html!
или вот так:
$string="Hi, my name is $name";
Это старый путь!
Или вот так:
$string=sprintf("Hi, my name is %s",$name);
Это то, что написал программист из Visual Basic или других языков программирования клиентов!
Надеюсь, я был полезен.