Следующий код, который отображает значение из массива, представляет разные результаты при обертке в foreach(), а не в том случае, когда я использую простой цикл for. Цикл for представляет правильные данные, но foreach(), кажется, изменяет входной массив с каждой итерацией.PHP foreach() изменяет массив
$arr = array_merge($arr1, $arr2);
for ($x = 0; $x < count($arr); $x++) {
echo $arr[90]['circread_value'];
}
foreach ($arr as $unused) {
echo $arr[90]['circread_value'];
}
Выход из для цикла имеет то же значение, снова и снова (как ожидалось):
1382429.00
1382429.00
1382429.00
1382429.00
...
Выхода из Еогеаспа() показывает, что 91-й элемент в массиве является с каждой итерацией:
56256.00
45652.00
50726.00
317896.00
...
Как это может быть?
Примечание: Я знаю, что приведенный выше код является надуманным (очевидно, внутри foreach() Я на самом деле желаю продолжить обработку и ссылаюсь на каждый элемент массива, который я выполняю, а не просто на 91-й . элемент) я просто сократил обратно код на что-то простое (как часть моей отладки, так же как и для размещения здесь)
Некоторая дополнительная информация:
- $ обр была создана array_merge» используя два массива из 91 элементов для создания массива элементов 182.
- Поведение, которое я вижу, происходит только для 91-го элемента - если я выхожу из $ arr [89] ['circread_value'] или $ arr [91] ['circread_value'], я получаю согласованные значения из foreach() слишком.
- В (казалось бы, случайная) ценностью, которые я вижу в Еогеаспе() на самом деле является значение от других элементов в массиве (массив, как он выглядит перед началом Еогеаспа)
входные массивы ($ arr1 и $ arr2) можно найти здесь: http://pastebin.com/wQN8XXu2
Спасибо за понимание. Не стесняйтесь обращаться за дополнительной информацией.
Интересно. Каков вывод 'var_dump' для каждой итерации цикла? – knittl
Вы говорите, что вы выполнили * точный * код выше с вашими данными, и вы видите эту проблему? – DaveRandom
Я [не могу повторить] (http://codepad.viper-7.com/eHzDf2) this ... PHP version please – DaveRandom