PHP的=&运营商

这两个PHP语句是否做同样的事情?

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

是的,他们是完全一样的东西。 他们只需要引用该对象并在variables$o内引用它。 请注意, thing应该是变数。

从句法上讲,它们不是一回事。 运算符是atomic =& ,这实际上很重要。 例如,你不能在三元expression式中使用=&运算符。 以下两种都不是有效的语法:

 $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= ?> 

variables$ c因为$ a变成NULL而variables$ b保持其值。

如果你的意思thing前面有一个$ ,那么是的,两者都是通过引用来分配的。 你可以在这里了解更多关于PHP的参考资料: http : //www.php.net/manual/en/language.references.whatdo.php

是的,他们这样做。 $o在两种情况下都会成为thing的参考 (我认为thing不是一个常量,而是实际上是一个有意义的variables)。