PHP运算符=&是什么意思?

Ibe*_*dia 32 php operators

可能重复: PHP中的"=&"和"&="运算符是什么意思?

我在下面的代码中找到了运算符"=&",我不知道它的含义.它是什么意思,它有什么作用?

我读它的代码:

function ContentParseRoute($segments)
{
    $vars = array();

    //Get the active menu item
    $menu =& JSite::getMenu();
    $item =& $menu->getActive();

    // Count route segments
    $count = count($segments);
        ....
Run Code Online (Sandbox Code Playgroud)

Aus*_*yde 57

这不是=reference(&)的赋值().

如果你要说:

$a = 42;
$b =& $a;
Run Code Online (Sandbox Code Playgroud)

实际上是$a 通过引用来指定$b.

通过引用分配的是将两个变量"绑定"在一起.现在,如果您$a稍后修改,$b将随之改变.

例如:

$a = 42;
$b =& $a;

//later
echo $a; // 42
echo $b; // 42

$a = 13;
echo $a; // 13
echo $b; // 13
Run Code Online (Sandbox Code Playgroud)

编辑:

作为Artefacto在评论中指出的,$a =& $b一样的$a = (&$b).

这是因为虽然&运算符意味着从某个东西做出引用,但是=运算符确实按值赋值,因此表达式$a = (&$b)意味着临时引用$b,然后将该临时值分配给$a,而不是通过引用赋值.

  • -1` $ b =(&$ a);`是无效的语法.我知道这不是你的意思,但`=&`实际上是一个单独的运算符,并转换为操作码`ASSIGN_REF`.这不是一个无关紧要的内部观察.考虑函数`func`,它通过引用返回`$ a = func()`.这个函数返回一个引用,但`$ a`不会是引用,因为运算符`=`打破了引用集并清除了标志.你必须实际做`$ a =&$ func()`.`&`表示"从中引出一个引用(例如`array(&$ a)`),但是通过引用分配引用是不够的. (10认同)
  • 真的,现在?我不知道,之前从未打破过(至少显然).猜猜你每天都在学习什么.:)我将编辑我的答案进行此更正. (4认同)
  • 应该是"这是一个参考作业"吗?"你实际上是通过参考$ a来分配$ b"对我来说也是一种更直观的方式. (2认同)

Jac*_*kin 7

它是引用赋值运算符.

这意味着当您稍后在代码中修改运算符的LHS时,它将修改RHS.您将LHS指向RHS占用的同一块内存.

  • LHS =左手侧RHS =右手侧 (4认同)

bsc*_*fer 5

这是一个正在使用的示例:

$array = array('apple', 'orange', 'banana');

// Without &
foreach($array as $d)
{
    $d = 'fruit';
}

echo implode(', ', $array); // apple, orange, banana

// With &
foreach($array as &$d)
{
    $d = 'fruit';
}

echo implode(', ', $array); // fruit, fruit, fruit
Run Code Online (Sandbox Code Playgroud)

不是说明,而是一个&无需在=&分配中使用运算符就可以使用运算符的示例。