Что такое ссылки в PHP? Чем передача по ссылке отличается от передачи по значению?

Ответ

Ссылка в PHP - это псевдоним (alias) для переменной, а не указатель на память (как в C).

$a = 1;
$b = &$a;   // $b - ссылка на $a
$b = 2;
echo $a;    // 2 (изменилось!)
unset($b);  // удаляет только псевдоним
echo $a;    // 2 (значение осталось)

По значению - функция получает копию (с copy-on-write):

function add($x) { $x++; }
$n = 5;
add($n);
echo $n; // 5 (не изменилось)

По ссылке - функция работает с оригиналом:

function add(&$x) { $x++; }
$n = 5;
add($n);
echo $n; // 6 (изменилось)
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.