Оператор PHP = &

Оба эти заявления PHP делают одно и то же:

$o =& $thing; $o = &$thing; 

Solutions Collecting From Web of "Оператор PHP = &"

Да, они оба то же самое. Они просто берут ссылку на объект и ссылаются на него в переменной $o . Обратите внимание, thing должны быть переменными.

Синтаксически это не одно и то же. Оператор – атом = &, и это действительно имеет значение. Например, вы не можете использовать оператор = & в тройном выражении. Ни один из следующих действий не является допустимым синтаксисом:

 $f = isset($field[0]) ? &$field[0] : &$field; $f =& isset($field[0]) ? $field[0] : $field; 

Поэтому вместо этого вы будете использовать это:

 isset($field[0]) ? $f =& $field[0] : $f =& $field; 

Оба они дают ожидаемую ошибку T_PAAMAYIM_NEKUDOTAYIM.

Если вы имели в виду $o = &$thing; то это присваивает ссылку на вещь на o. Вот пример:

 $thing = "foo"; $o = &$thing; echo $o; // echos foo $thing = "bar"; echo $o; // echos bar 

Разница очень важна:

 <?php $a = "exists"; $b = $a; $c =& $a; echo "a=".$a.", b=".$b.", c=".$c."<br/>"; //a=exists b=exists c=exists $a = null; echo "a=".$a.", b=".$b.", c=".$c; //a= b=exists c= ?> 

Переменная $ c умирает как $ a, становится NULL, но переменная $ b сохраняет ее значение.

Если вы имели в виду thing с $ перед ними, то да, оба назначаются по ссылке. Подробнее о ссылках на PHP вы можете узнать здесь: http://www.php.net/manual/en/language.references.whatdo.php

Да, так и есть. $o станет ссылкой на thing в обоих случаях (я предполагаю, что thing не является константой, а фактически чем-то значимым как переменная).