foreach ($arr1 as $v){
...
}
foreach ($arr2 as $v){
...
}
那麼,這兩個$v
會有一些奇怪的行爲。如果我用$v2
替換第二個$v
,那麼一切都很好。在PHP temp中的奇怪行爲var
foreach ($arr1 as $v){
...
}
foreach ($arr2 as $v){
...
}
那麼,這兩個$v
會有一些奇怪的行爲。如果我用$v2
替換第二個$v
,那麼一切都很好。在PHP temp中的奇怪行爲var
如果您不是嵌套循環,請在第一個foreach循環之後和第二個foreach循環之前嘗試使用unset()
即$v
。
任何「奇怪行爲」即發生可能是因爲你正在築巢的foreach循環,所以你將需要改變第二露出$v
的變數名稱作爲第一個$v
會的範圍內可第二(嵌套)foreach。
如果您有類似
foreach($arr1 as $v
{
foreach($arr2 as $v)
{
// Code
}
}
我可以看到一個問題。否則,我們需要一個更好的「奇怪行爲」的定義。
在
foreach ($arr1 as $v) {
// some code ...
foreach ($arr2 as $v) {
// more code
}
// here you might see something unexpected, namely the last $v of the inner loop, not the current $v of the outer loop
}
的情況。然而,如果你有兩個foreach
環一前一後,不嵌套的,我無法想象,你看到什麼奇怪的行爲。
請勿複製其他人的答案。 – 2010-09-08 16:42:32
@Josh K:我看不到任何複製的東西...... – NikiC 2010-09-08 16:45:19
@nikic:它與我的答案有很強烈的相似之處。 – 2010-09-08 17:21:37
define:奇怪的行爲 – Iznogood 2010-09-08 16:24:43
如果第一個循環使用的是引用,例如: 'foreach($ arr1 as&$ v){}' - '$ arr2'中的最後一項依次被設置爲'$ arr1'的每個項目。 – 2010-09-08 16:33:41
它非常驚人,如此糟糕的問題得到這麼多*可能很好*的答案。 – Frankie 2010-09-08 16:35:50