Калининград+7.962.2626.555

Одинарные и двойные кавычки в PHP

10.01.2012

Посмотрим в чем разница между одинарными и двойными кавычками и какие кавычки лучше использовать.

Почувствуйте разницу:

$var = 'text';
echo "text $var"; // выведет на экран text text
echo 'text $var'; // выведет на экран text $var

Это дает нам право думать, что формирование строк становится еще более простой задачей:

echo "Имя: $name, город: $city";

Появляется резонный вопрос: что лучше использовать? Видно, что в первом случае перед выводом строки на экран PHP ищет в ней переменные и в случае нахождения таковых заменяет эти переменные их значениями, а уже потом выводит результат. Во втором случае осуществляется просто вывод строки. Понятно, что лишние телодвижения занимают какое-то время и нужно лишь разобраться в его абсолютных величинах.

Посмотрим сколько простых способов формирования строк можно использовать для решения одной и той же задачи:

$var2 = "текст $var";
$var2 = "текст ".$var;
$var2 = 'текст '.$var;

Определим сколько по времени выполняется каждый из этих способов. Простой тест из нескольких сотен тысяч циклов показал следующие результаты:

Способ Время выполнения
$var2 = "текст $var" 4.224
$var2 = "текст ".$var 3.144
$var2 = 'текст '.$var 3.122


Результат этого теста прост: для решения подобной задачи нужно использовать следующий способ формирования строк:

$var2 = 'текст '.$var;

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

$var2 = "текст $var";

Изменим строки:

Способ Время выполнения
$var2 = "текст $var текст $var текст $var текст $var текст $var текст $var текст $var текст $var"; 5.082
$var2 = "текст ".$var."текст ".$var."текст ".$var."текст ".$var."текст ".$var."текст ".$var."текст ".$var."текст ".$var; 6.765
$var2 = 'текст '.$var.'текст '.$var.'текст '.$var.'текст '.$var.'текст '.$var.'текст '.$var.'текст '.$var.'текст '.$var; 6.744


Результат противоположный.

Слабым звеном является оператор сложения строк (.) точка. Именно из-за него при формировании большого числа строк где требуется их сложение есть смысл отдать предпочтение именно заведомо слабому игроку, а именно:

$var2 = "текст $var";