【发布时间】:2011-08-21 06:31:51
【问题描述】:
这两个 PHP 语句是否在做同样的事情?:
$o =& $thing;
$o = &$thing;
【问题讨论】:
这两个 PHP 语句是否在做同样的事情?:
$o =& $thing;
$o = &$thing;
【问题讨论】:
是的,它们是完全相同的东西。他们只是获取对象的引用并在变量$o 中引用它。请注意,thing 应该是变量。
【讨论】:
$thing。
区别很重要:
<?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=
?>
随着 $a 变为 NULL,变量 $c 消失,但变量 $b 保持其值。
【讨论】:
从句法上讲,它们不是一回事。运算符是原子的 =& ,这实际上很重要。例如,您不能在三元表达式中使用 =& 运算符。以下都不是有效的语法:
$f = isset($field[0]) ? &$field[0] : &$field;
$f =& isset($field[0]) ? $field[0] : $field;
所以你会使用这个:
isset($field[0]) ? $f =& $field[0] : $f =& $field;
【讨论】:
=&,但奇怪的是,=& 实际上并没有出现在assignment operators 中(它总是$x = &$y;)。空白空间真的很重要还是相同?你能提供一些参考吗?
是的,他们有。 $o 在这两种情况下都会变成reference 到thing(我假设thing 不是常数,但实际上作为变量有意义)。
【讨论】:
$thing。
如果您的意思是 thing 前面有 $,那么是的,两者都是通过引用分配的。您可以在此处了解有关 PHP 参考的更多信息:http://www.php.net/manual/en/language.references.whatdo.php
【讨论】:
$thing。
它们都给出了预期的 T_PAAMAYIM_NEKUDOTAYIM 错误。
如果您的意思是$o = &$thing;,那么会将thing 的引用分配给o。这是一个例子:
$thing = "foo";
$o = &$thing;
echo $o; // echos foo
$thing = "bar";
echo $o; // echos bar
【讨论】:
$thing。