Что означает оператор 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); ....
3 Solutions collect form web for “Что означает оператор PHP = & mean?”
Это не задание ( = ) по ссылке ( & ).
Если бы вы сказали:
$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
Это не объяснение, а пример того, как можно использовать оператор & без использования его в =& присваивании.