Посмотрим в чем разница между одинарными и двойными кавычками и какие кавычки лучше использовать.
Почувствуйте разницу:
$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";