PHP的=&运算符

Kev*_*Kev 45 php assignment-operator

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

$o =& $thing;

$o = &$thing;
Run Code Online (Sandbox Code Playgroud)

jud*_*dda 38

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


Sco*_*ine 27

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

$f = isset($field[0]) ? &$field[0] : &$field;
$f =& isset($field[0]) ? $field[0] : $field;
Run Code Online (Sandbox Code Playgroud)

所以相反你会使用这个:

isset($field[0]) ? $f =& $field[0] : $f =& $field;
Run Code Online (Sandbox Code Playgroud)


Ric*_*haw 13

它们都给出了预期的T_PAAMAYIM_NEKUDOTAYIM错误.

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

$thing = "foo";

$o = &$thing;

echo $o; // echos foo

$thing = "bar";

echo $o; // echos bar
Run Code Online (Sandbox Code Playgroud)


bbe*_*bbe 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= 
?>
Run Code Online (Sandbox Code Playgroud)

变量$ c在$ a变为NULL时死亡,但变量$ b保持其值.