PHP的=&操作者

时间:2011-05-08 20:31:14

标签: php assignment-operator

这两个PHP语句都做同样的事情吗?:

$o =& $thing;

$o = &$thing;

6 个答案:

答案 0 :(得分:38)

是的,它们都是完全相同的。他们只需要引用对象并在变量$o中引用它。请注意,thing应该是变量。

答案 1 :(得分:27)

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

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

所以你会使用它:

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

答案 2 :(得分:13)

他们都给出了预期的T_PAAMAYIM_NEKUDOTAYIM错误。

如果你的意思是$o = &$thing;,那么就将事物的引用分配给o。这是一个例子:

$thing = "foo";

$o = &$thing;

echo $o; // echos foo

$thing = "bar";

echo $o; // echos bar

答案 3 :(得分:12)

差异非常重要:

<?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保持其值。

答案 4 :(得分:1)

是的,他们这样做。在这两种情况下,$o将成为referencething(我假设thing不是常量,但实际上是一个有意义的变量。)

答案 5 :(得分:1)

如果您认为thing之前有$,那么是的,两者都是通过引用分配的。您可以在此处了解有关PHP中引用的更多信息:http://www.php.net/manual/en/language.references.whatdo.php