Оператор присваивания PHP = &

Возможный дубликат:
Оператор присваивания ссылок в php = &

Что делает = & оператор присваивания в PHP? Я не мог найти ссылку в руководстве PHP в разделе назначения.

Я видел это в экземпляре класса, поэтому я совершенно не понимаю, в чем разница между = & и только =.

Ответы

Ответ 1

Это означает назначение ссылок.

Существуют два различия между = и =&.

Во-первых, = не создает ссылочные наборы:

$a = 1;
$b = $a;
$a = 5; //$b is still 1

С другой стороны, оператор =& создает ссылочные наборы:

$a = 1;
$b = &$a;
$a = 5; //$b is also 5

Во-вторых, = изменяет значение всех переменных в наборе ссылок, а &= прерывает набор ссылок. Сравните пример с этим:

$a = 1;
$b = &$a;
$c = 5;
$a = &$c; //$a is 5, $b is 1

Ответ 2

Он называется ссылочным назначением. Он присваивает переменной переменной значение того же значения, что и назначенная переменная.

В PHP 4 это было довольно часто при назначении объектов и массивов, иначе вы получили бы копию объекта или массива. Это было плохо для управления памятью, а также некоторых типов программирования.

В PHP 5 объекты и массивы подсчитываются по ссылке, а не копируются, поэтому назначение ссылок требуется гораздо реже. Некоторые программисты все еще используют его "на всякий случай". PHP почему-то решает, что в нем есть смысл. Но ссылочное задание по-прежнему действует другими способами, например, со скалярными переменными, которые обычно копируются при назначении.

Ответ 3

Это ссылка назначения, которая на самом деле является двумя разными операторами.

= - это назначение, а & обращается к значению справа по ссылке.