Что означает оператор 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
Это не объяснение, а пример того, как можно использовать оператор &
без использования его в =&
присваивании.