Оператор присваивания 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
Это ссылка назначения, которая на самом деле является двумя разными операторами.
=
- это назначение, а &
обращается к значению справа по ссылке.