PHP – Амперсанд перед переменной в цикле foreach

Возможный дубликат:
Ссылка. Что означает этот символ в PHP?

Мне нужно знать, почему мы используем амперсанд перед переменной в цикле foreach

foreach ($wishdets as $wishes => &$wishesarray) { foreach ($wishesarray as $categories => &$categoriesarray) { } } 

благодаря

Related of "PHP – Амперсанд перед переменной в цикле foreach"

Этот пример покажет вам разницу

 $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