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

时间:2010-08-19 21:49:02

标签: php operators

  

可能重复:   What do the "=&" and "&=" operators in PHP mean?

我找到了运营商“=&”在下面的代码中,我不知道它的含义。它意味着什么,它做了什么?

我读过的代码

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

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

    // Count route segments
    $count = count($segments);
        ....

3 个答案:

答案 0 :(得分:55)

这不是作业(=)的作业(&)。

如果你要说:

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

实际上说通过引用将$a 分配给$b

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

例如:

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

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

$a = 13;
echo $a; // 13
echo $b; // 13

编辑:

正如Artefacto在评论中指出的那样,$a =& $b $a = (&$b)相同。

这是因为虽然&运算符意味着从某个内容中引用,=运算符会分配,因此表达式{{1} }表示对$a = (&$b)进行临时引用,然后将该临时值分配给$b,其中不是按引用分配。

答案 1 :(得分:7)

引用赋值运算符

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

答案 2 :(得分:4)

以下是使用中的示例:

$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

不是解释,而是在&作业中使用=&运算符而不使用它的示例。