Возможный дубликат:
Оператор задания ссылки в php = &
Что означает оператор & & присваивания в PHP? Я не мог найти ссылку в руководстве PHP в разделе назначения.
Я видел это в экземпляре класса, поэтому я совершенно не понимаю, в чем разница между = & и only = .
Это означает назначение ссылок .
Существуют два различия между =
и =&
.
Во-первых, =
не создает ссылочные наборы:
$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
Это называется ссылочным назначением. Он присваивает переменной переменной значение того же значения, что и назначенная переменная.
В PHP 4 это было довольно часто при назначении объектов и массивов, иначе вы получили бы копию объекта или массива. Это было плохо для управления памятью, а также некоторых типов программирования.
В PHP 5 объекты и массивы подсчитываются по ссылке, а не копируются, поэтому назначение ссылок требуется гораздо реже. Некоторые программисты все еще используют его «на всякий случай». PHP почему-то решает, что в нем есть смысл. Но ссылочное задание все еще действует другими способами, например, со скалярными переменными, которые обычно копируются при назначении.
Это ссылочное задание, которое на самом деле является двумя разными операторами.
Параметр =
– это присвоение, а &
доступ к значению справа по ссылке.