Різниця між подвійними та одинарними лапками у PHP

Давайте розберемо різницю між подвійними та одинарними лапками у PHP, і на прикладах з’ясуємо, коли які потрібно використовувати.
Змінні та екрануючі послідовності для спеціальних символів, що зустрічаються у рядках, укладених у одинарні лапки – не обробляються. Рядки, обрамлені апострофами, обробляються інтерпретатором PHP набагато швидше, ніж аналогічні рядки, укладені подвійними лапками.
Причина тут проста: рядки в подвійних лапках інтерпретатор PHP додатково перевіряє на наявність змінних і якщо такі знаходяться, то замість імені змінної в рядок вставляється її значення. А ось рядок, укладений в апострофи, сприймається інтерпретатором як звичайний текст і жодних перетворень у цих рядках PHP не проводить. Думаю, зрозуміло, що обробка рядків в одинарних лапках у будь-якому випадку відбуватиметься швидше.
Для початку опишемо способи визначення рядка, а потім перевіримо, наскільки швидше відбуватиметься обробка рядків в одинарних лапках.
Найпростіший спосіб визначити рядок - це укласти його в одинарні лапки ('). Щоб використовувати одинарні лапки всередині рядка, укладеного в одинарні лапки, їх необхідно випередити символом зворотної косою межі (\), тобто екранувати. Якщо зворотна коса риса повинна йти перед одинарною лапкою або бути в кінці рядка, вам необхідно продублювати її. Якщо ви спробуєте екранувати будь-який інший символ, зворотна коса риса також буде надрукована.
Наведемо приклад використання одинарних лапок:
// Виведе: Простий рядок
echo 'Простий рядок';
// Виведе: I'm here
echo 'I'm here';
// Виведе: Це не вставить: новий рядок
echo 'Це не вставить: новий рядок';
// Виведе: Змінна $example теж не підставиться
echo 'Змінна $example теж не підставиться';Якщо рядок укладено в подвійні лапки ("), PHP розпізнає більшу кількість керуючих послідовностей для спеціальних символів і підставляє замість імені змінної в рядок її значення. Так само, як і з одинарними лапками, для того, щоб використовувати подвійні лапки всередині рядка, укладеного у подвійні лапки, їх необхідно випередити символом зворотної косої межі (\).Наведемо приклад використання подвійних лапок:
// Виведе: Простий рядок
echo "Простий рядок";
// Виведе: Фірма "Пролісок"
echo "Фірма "Пролісок"";
// Виведе: Це переведе на новий рядок
echo "Це переведе на новий рядок \n";
// Виведе: Змінна підставиться
$example = 'підставиться';
echo "Змінна $example";Слід також пам’ятати, що послідовність "n" (новий рядок), "\r" (повернення каретки) для звичайного тексту, а не для HTML. Отже, у браузері Ви не побачите змін (тільки у вихідному коді сторінки).Давайте з’ясуємо, наскільки швидше одинарні лапки подвійних. Для вимірів напишемо короткий тестовий скрипт, і відразу зауважимо, що якщо Ви будете його тестувати, результати, які залежать від апаратної частини вашого ПК або сервера, будуть інші.
// Повертаємо мітку часу на початку циклу
$start = microtime(true);
// Створюємо цикл цикл на 1 млн ітерацій
for ($i = 0; $i<1000000; $i++) {
$text = 'Тут символьний рядок';
}
// Обчислюємо витрачений час
$time = (microtime(true) - $start);Результат: 0.09 секунди.Якщо ми замінимо одинарні лапки на подвійні:
$text = "Тут символьний рядок";Результат дорівнюватиме 0.10 секунди.Як бачимо, при використанні текстових рядків різниця в часі виконання зовсім невелика, навіть можна сказати і не існує. Найцікавіше почнеться, коли спробуємо поєднати рядок та змінні.
$text = "Тут символьний рядок $i";або$text = $i."Тут символьний рядок";Результат: 0.27 секунди.Різниця дуже відчутна. Конкатенація та подвійні лапки явно впливають на швидкодію, якщо до рядка додано змінні.
Коли сервер обробляє код, він перевіряє весь вміст подвійних лапок на наявність змінних, констант та інше. Це триває час. А те, що знаходиться між одинарними лапками сервер обробляє як готовий текст і йому все одно, що там. Різниця між швидкодією одинарних та подвійних лапок дуже незначна, але якщо ви займатиметеся розробкою високо навантаженого проекту, то кілька зекономлених мілісекунд – це вже перемога.

echo '<div class="header">'.$title.'</div>'; - все красиво та зрозуміло
В іншому випадку:
echo "<div class=\"header\">".$title."</div>"; - ну не гарно, погодьтеся
Або якщо не слідувати поставленим собою правилам:
echo "<div class='header'>".$title."</div>"; - ну і так не те, я вважаю потрібно дотримуватися своїх правил або ти використовуєш у html скрізь подвійні лапки а в php одинарні або навпаки.