Что означает оператор PHP = &? [duplicate]

Возможный дубликат: Что означают операторы "= &" и "& =" в PHP?

Я нашел оператор "= &" в следующий код, и я не знаю, что это значит. Что это значит и что это делает?

Код, в котором я его прочитал :

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

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

    // Count route segments
    $count = count($segments);
        ....
32
задан Community 23 May 2017 в 12:10
поделиться

3 ответа

Это не задание ( = ) по ссылке ( & ).

Если бы вы сказали:

$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

РЕДАКТИРОВАТЬ:

Как Артефакто указывает в комментариях, $ a = & $ b - это не то же самое, что $ a = (& $ b) .

Это связано с тем, что, хотя оператор & означает создание ссылки из чего-либо, оператор = присваивает значение по значению , поэтому выражение $ a = (& $ b) означает создание временной ссылки на $ b , затем присвоение значения этого временного значения $ a , которое равно не присвоить по ссылке.

57
ответ дан 27 November 2019 в 20:23
поделиться

Вот пример его использования:

$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

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

5
ответ дан 27 November 2019 в 20:23
поделиться

Это оператор ссылочного присваивания .

Это означает, что при изменении LHS оператора позже в коде он изменит и RHS. Вы указываете LHS на тот же блок памяти, который занимает RHS.

7
ответ дан 27 November 2019 в 20:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: