Для начала разберем копирование значений перемененных на этом примере:
$a = 5; // записать значение 5 в именованную ($a) ячейку памяти
$b = $a; // назначить новую ячейку в памяти и дать ей имя $b; присвоить ей такое же значение, что и в переменной $a
// при этом у нас две разные переменные, они хранятся в разных ячейках памяти, но у них одинаковые значения
echo $a; // 5
echo $b; // 5
$b = 10;
echo $a; // выведет 5
echo $b; // выведет 10
Создание ссылок в PHP
Ссылка создается при помощи амперсанда & — у одной области памяти появляется два имени.
$a = 10;
$b = &$a; // создаем ссылку-переменную $b значением которой является является ссылкой на переменную $a; у ячейки $a появилось еще одно имя — $b
$b = 20; // присвоить именованной области памяти (a) значение 20
echo $a; // 20
echo $b; // 20
unset ($a); // разрыв ссылки; при этом b станет самостоятельной переменной
Переменные переменных
$a = ‘hiho’;
$$a = ‘catguys’; // создать переменную имя которой находится в переменной $a; т.е мы создали переменную $hiho
echo $a, ‘ ‘ , $hiho; // выдаст «hiho catguys»