下面的代码在数组中显示值时,在包装在foreach()中时会显示不同的结果,而不是在使用简单的for-loop时。 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'];
}
从for循环是相同的值一遍又一遍(如预期)输出:
1382429.00
1382429.00
1382429.00
1382429.00
...
从在foreach(输出)示出了阵列中的第91元件是随着每次迭代改变:
56256.00
45652.00
50726.00
317896.00
...
这是怎么回事?注意:我知道上面的代码是人为设计的(显然在foreach()中我实际上想要做进一步处理,并引用我正在迭代的数组的每个元素,而不仅仅是看第91个。元),我只是削减返回的代码简单的东西(如我调试的一部分,尽可能张贴在这里)
一些进一步的信息:
- $ ARR已被array_merge创建”两个91元素数组创建一个182元素数组。
- 我看到的行为只发生在第91个元素 - 如果我回显$ arr [89] ['circread_value']或$ arr [91] ['circread_value'],我会从foreach()获得一致的值太。
- 我在foreach(见(看似随机的)值)是从其它元件阵列中的实际值
输入阵列($ ARR1(因为它看起来开始前在foreach阵列)和$ arr2)可以在这里找到:http://pastebin.com/wQN8XXu2
感谢您的任何见解。不要犹豫,要求进一步的信息。
有趣。每个循环迭代的'var_dump'的输出是什么? – knittl 2012-04-04 13:22:46
你是说你用你的数据运行了上面的* exact *代码,并且你看到这个问题? – DaveRandom 2012-04-04 13:23:12
我[无法重复](http://codepad.viper-7.com/eHzDf2)这... PHP版请 – DaveRandom 2012-04-04 13:28:59