2010-07-08 2 views
0

Можно создать дубликат:
Reference assignment operator in php =&оператор присваивания PHP = &

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

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

ответ

7

Это значит reference assignment.

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

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

$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 
+1

Не видите использование & = в третьем примере. Я что-то упускаю? –

0

Это reference assignment, которая на самом деле два разных оператора.

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

2

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

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

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

+0

+1 для подробного объяснения. –

Смежные вопросы