PHP运算符是什么意思?
可能重复: PHP中的“=&”和“&=”运算符是什么意思?
我在下面的代码中找到了运算符“=&”,我不知道它是什么意思。 这是什么意思?它有什么作用?
我读的代码 :
function ContentParseRoute($segments)
{
$vars = array();
//Get the active menu item
$menu =& JSite::getMenu();
$item =& $menu->getActive();
// Count route segments
$count = count($segments);
....
这不是通过引用( &
)赋值( =
)。
如果你想说:
$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)
。
这是因为&
运算符意味着引用某个东西,而=
运算符是按值赋值的,所以表达式$a = (&$b)
意味着对$b
进行临时引用,然后赋值那是暂时的$a
,而不是通过引用分配。
它是引用赋值操作符 。
这意味着当您稍后在代码中修改操作员的LHS时,它将修改RHS。 您将LHS指向RHS占用的同一块内存。
这里有一个它正在使用的例子:
$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
不是一个解释,而是一个能够使用&
运算符而不在=&
赋值中使用它的例子。