Вставка переменных в PHP

В 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'; ?>