← Назад к вопросам

В чем разница между двойными ("") и одинарными ('') кавычками?

1.0 Junior🔥 121 комментариев
#PHP Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

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

Двойные кавычки обрабатывают переменные и escape-последовательности. Одинарные кавычки — это просто литеральная строка.

Основная разница

$name = "John";

// Двойные кавычки: переменные интерпретируются
echo "Hello, $name!";      // Выведет: Hello, John!
echo "Line 1\nLine 2";      // Выведет две строки

// Одинарные кавычки: всё как есть
echo 'Hello, $name!';       // Выведет: Hello, $name!
echo 'Line 1\nLine 2';      // Выведет: Line 1\nLine 2 (буквально!)

Escape-последовательности

// Двойные кавычки
"\n"   → символ новой строки
"\t"   → табуляция
"\\"   → обратный слэш
"\$"   → доллар

// Одинарные кавычки
'\n'   → буквально: \n (два символа)
'\t'   → буквально: \t (два символа)
'\\'   → один обратный слэш
'\$'   → буквально: \$ (два символа)

Переменные и выражения

$count = 5;

// Двойные: работают переменные
echo "Items: $count";           // Items: 5
echo "Total: {$count * 2}";     // Total: 10
echo "User: {$user->name}";     // User: John

// Одинарные: нет переменных
echo 'Items: $count';           // Items: $count
echo 'Total: {$count * 2}';     // Total: {$count * 2}

Производительность

Одинарные кавычки немного быстрее (нет обработки переменных), но разница минимальна в modern PHP.

// Микроскопическая разница
$start = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
    $x = 'single quotes';
}
$single = microtime(true) - $start;

$start = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
    $x = "double quotes";
}
$double = microtime(true) - $start;

// Разница ~5% (не значительна)

Best Practices

// Используй одинарные когда нет переменных
$message = 'Error: File not found';
$path = 'C:\\Users\\John\\file.txt';

// Используй двойные когда нужны переменные
$user_id = 123;
$sql = "SELECT * FROM users WHERE id = $user_id";

// Или используй heredoc/nowdoc для больших строк
$html = <<<HTML
<div>
    <h1>$title</h1>
    <p>$content</p>
</div>
HTML;

// Nowdoc для строк без переменных
$json = <<<'JSON'
{
    "key": "$value",
    "nested": "$data"
}
JSON;

В контексте

// Конкатенация
$str = 'Hello' . ' ' . 'World';  // Лучше для строк без переменных
$str = "Count: $count items";    // Лучше с переменными

// JSON
$json = '{"key": "' . $value . '"}';
// Лучше:
$json = "{\"key\": \"$value\"}";
// Или:
$json = json_encode(['key' => $value]);

// Регулярные выражения
$pattern = '/^[a-z]+$/';  // Одинарные (нет переменных)
$pattern = "/^[a-z{$count}]+$/";  // Двойные (есть переменная)

Вывод

Используй одинарные кавычки по умолчанию (быстрее, безопаснее, видна уникальность), двойные кавычки когда нужны переменные или escape-последовательности.

В чем разница между двойными ("") и одинарными ('') кавычками? | PrepBro