我找到了运营商“=&”在下面的代码中,我不知道它的含义。它意味着什么,它做了什么?
我读过的代码:
function ContentParseRoute($segments)
{
$vars = array();
//Get the active menu item
$menu =& JSite::getMenu();
$item =& $menu->getActive();
// Count route segments
$count = count($segments);
....
答案 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
不是解释,而是在&
作业中使用=&
运算符而不使用它的示例。