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)。