📚
#33 23.09.2025 PHP Basics

Расскажите об использовании двойных кавычек "".

Строки в двойных кавычках "..." выполняют интерполяцию: подставляют значения переменных ("Привет, $name!") и спецсимволы (\n, \t). Для сложных выражений используйте фигурные скобки ({$user->name}). Разница в производительности с одинарными кавычками минимальна.

Подробнее
⚠️
Внимание! Этот текст был сгенерирован AI-ассистентом. Информация может содержать неточности и требует проверки.

Полный ответ:

1. Основное назначение: Интерполяция переменных

Главное отличие двойных кавычек от одинарных — способность подставлять (интерполировать) значения переменных и специальных символов непосредственно внутри строки.

$name = "Мир";
echo "Привет, $name!"; // Привет, Мир!
// Эквивалентно: echo "Привет, " . $name . "!";

2. Синтаксис интерполяции

Простая переменная:

$fruit = "яблоко";
echo "Я съел $fruit"; // Я съел яблоко

Сложные выражения (требуют фигурных скобок {}):

Когда имя переменной неочевидно для парсера, нужно использовать {}.

$juice = "яблочный";

// Проблема: PHP ищет переменную $juiceсок
echo "Я выпил $juiceсок"; // Ошибка/Notice

// Решение с фигурными скобками:
echo "Я выпил {$juice}сок"; // Я выпил яблочный сок

// Доступ к элементам массива и свойствам объекта:
echo "Значение: {$array['key']}"; // Массив
echo "Имя: {$user->name}";        // Свойство объекта
echo "Результат: {${$variableName}}"; // Переменная переменной

3. Экранирование специальных символов

В двойных кавычках работают управляющие последовательности (escape-последовательности):

Последовательность Значение
\n новая строка (LF)
\r возврат каретки (CR)
\t табуляция
\$ знак доллара (чтобы он не интерпретировался как начало переменной)
\" двойная кавычка
\\ обратный слеш
echo "Первая строка\nВторая строка";
echo "Цена: \$100"; // Выведет: Цена: $100

4. Производительность (Миф и Реальность)

Существует миф, что строки в двойных кавычках значительно медленнее из-за необходимости парсинга на наличие переменных.

Современная реальность:

  • Разница в производительности между '...' и "..." ничтожна в современном PHP (Zend Engine 3+).
  • Разница заметна только в микро-бенчмарках на миллионах итераций.
  • Выбор должен основываться на необходимости интерполяции, а не на мнимой оптимизации.

5. Герентикс (Heredoc) — аналог двойных кавычек

Heredoc-синтаксис ведет себя как строка в двойных кавычках, но удобен для многострочного текста.

$name = "Катя";
$text = <<<EOT
Привет, $name!
Это многострочный текст.
Спецсимволы вроде \n и переменные интерполируются.
EOT;
echo $text;

6. Когда использовать двойные кавычки?

  1. Когда нужна интерполяция переменных.
  2. Когда нужны управляющие последовательности (\n, \t).
  3. Когда строка содержит много одинарных кавычек внутри (чтобы не экранировать их).
    echo "Он сказал: 'Это просто!'"; // Удобно
    

7. Лучшие практики

  • Для простого текста без переменных используйте одинарные кавычки (стилистическая рекомендация PSR).
  • Для строк с переменными используйте двойные кавычки или герентикс.
  • Для сложных выражений всегда используйте фигурные скобки {} для явного указания границ переменной.
  • Не конкатенируйте строки без необходимости, если можно использовать интерполяцию:
    // Хуже
    echo 'Привет, ' . $name . '!';
    // Лучше
    echo "Привет, $name!";
    

Итог:

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

  • Подставляют значения переменных прямо в строку
  • Требуют экранирования \$ и \"
  • Для сложных выражений нужны фигурные скобки {}
  • Разница в производительности с одинарными кавычками незначительна
  • Heredoc — это многострочный аналог двойных кавычек

Понимание интерполяции — ключ к эффективному использованию двойных кавычек.