В PHP одинарные и двойные кавычки для строк на самом деле не совсем эквиваленты. Дело в том, что в строки в двойных кавычках можно вставлять переменные - и вместо этих переменных подставится их значение.
Давайте попробуем на практике. Пусть у нас есть некоторая переменная:
<?php
$str = 'aaa';
?>
Давайте для начала выполним вставку этой переменной в какую-нибудь строку через операцию конкатенации:
<?php
$str = 'aaa';
echo 'xxx ' . $str . ' yyy';
?>
А теперь изменим кавычки нашей строки на двойные и выполним в нее вставку переменной:
<?php
$str = 'aaa';
echo "xxx $str yyy";
?>
Упростите следующий код:
<?php
$name = 'user';
echo 'hello, ' . $name . '!';
?>
Массивы
Можно также выполнять вставку элементов массива:
<?php
$arr = ['a', 'b', 'c'];
echo "xxx $arr[0] yyy";
?>
Упростите следующий код:
<?php
$arr = ['1', '2', '3'];
echo 'aaa ' . $arr[0] . ' bbb ' . $arr[1];
?>
Ассоциативные массивы
А вот вставка элементов ассоциативных массивов просто так работать не будет:
<?php
$arr = ['a'=>1, 'b'=>2, 'c'=>3];
echo "xxx $arr['a'] yyy"; // не работает
?>
Для вставки таких элементов их необходимо обернуть в фигурные скобки:
<?php
$arr = ['a'=>1, 'b'=>2, 'c'=>3];
echo "xxx {$arr['a']} yyy";
?>
Либо можно снять одинарные кавычки с ключа при вставке:
<?php
$arr = ['a'=>1, 'b'=2, 'c'=3];
echo "xxx $arr[a] yyy";
?>
Иногда имеет смысл тупо записать элемент массива в переменную, чтобы затем без проблем выполнить вставку переменной в строку:
<?php
$arr = ['a', 'b', 'c'];
$elem = $arr['a'];
echo "xxx $elem yyy";
?>
Упростите следующий код:
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3];
echo 'text ' . $arr['a'] . ' text ' . $arr['b'] . ' text';
?>