Что означает оператор PHP = & mean?
Возможный дубликат: Что делают "= &" и "& =" в PHP означают?
Я нашел оператор "= &" в следующем коде, и я не знаю, что это значит. Что это значит и что он делает?
Код, где я его читал:
function ContentParseRoute($segments)
{
$vars = array();
//Get the active menu item
$menu =& JSite::getMenu();
$item =& $menu->getActive();
// Count route segments
$count = count($segments);
....
Ответы
Ответ 1
Это не назначение (=
) по ссылке (&
).
Если бы вы сказали:
$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
EDIT:
Как отмечает Artefacto в комментариях, $a =& $b
не совпадает с $a = (&$b)
.
Это связано с тем, что в то время как оператор &
означает сделать что-то из-за чего-либо, оператор =
выполняет присваивание по значению, поэтому выражение $a = (&$b)
означает временную ссылку на $b
, затем назначить значение этого временного значения для $a
, которое не назначается по ссылке.
Ответ 2
Это оператор ссылочного присваивания.
Это означает, что когда вы измените LHS оператора позже в коде, он изменит RHS. Вы указываете LHS на тот же блок памяти, что и RHS.
Ответ 3
Вот пример использования:
$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
Не объяснение, а пример того, как можно использовать оператор &
, не используя его в назначении =&
.