Возможный дубликат:
Ссылка. Что означает этот символ в PHP?
Мне нужно знать, почему мы используем амперсанд перед переменной в цикле foreach
foreach ($wishdets as $wishes => &$wishesarray) { foreach ($wishesarray as $categories => &$categoriesarray) { } }
благодаря
Этот пример покажет вам разницу
$array = array(1, 2); foreach ($array as $value) { $value++; } print_r($array); // 1, 2 because we iterated over copy of value foreach ($array as &$value) { $value++; } print_r($array); // 2, 3 because we iterated over references to actual values of array
Ознакомьтесь с документами PHP для этого здесь: http://pl.php.net/manual/en/control-structures.foreach.php
Это означает, что он передается по ссылке вместо значения … IE любая манипуляция переменной влияет на оригинал. Это отличается тем значением, при котором любые модификации не влияют на исходный объект.
Это много раз задается в stackoverflow.
Он используется для применения изменений в одном экземпляре массива к основному массиву.
В виде:
// Теперь изменения не будут влиять на массив $ wisharray
foreach ($wishesarray as $id => $categoriy) { $categoriy++; } print_r($wishesarray); //It'll same as before..
Но теперь изменения будут отражать в массиве $ wisharray также
foreach ($wishesarray as $id => &$categoriy) { $categoriy++; } print_r($wishesarray); //It'll have values all increased by one..
Для кода в вашем вопросе не может быть конкретного ответа, потому что внутренний цикл foreach пуст.
То, что я вижу с вашим кодом, заключается в том, что внутренний foreach
выполняет итерацию по ссылке вместо обычного.
Я предлагаю вам прочитать страницу PHP Manual foreach
, она охватывает все четыре случая:
foreach($standard as $each); foreach($standard as &$each); # this is used in your question $reference = &$standard; foreach($reference as $each); $reference = &$standard; foreach($reference as &$each); # this is used in your question