Подтвердить что ты не робот

Что означает оператор 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);
        ....
4b9b3361

Ответ 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

Не объяснение, а пример того, как можно использовать оператор &, не используя его в назначении =&.