2010-09-08 75 views
0
foreach ($arr1 as $v){ 
... 
} 

foreach ($arr2 as $v){ 
... 
} 

那麼,這兩個$v會有一些奇怪的行爲。如果我用$v2替換第二個$v,那麼一切都很好。在PHP temp中的奇怪行爲var

+9

define:奇怪的行爲 – Iznogood 2010-09-08 16:24:43

+0

如果第一個循環使用的是引用,例如: 'foreach($ arr1 as&$ v){}' - '$ arr2'中的最後一項依次被設置爲'$ arr1'的每個項目。 – 2010-09-08 16:33:41

+4

它非常驚人,如此糟糕的問題得到這麼多*可能很好*的答案。 – Frankie 2010-09-08 16:35:50

回答

1

如果您不是嵌套循環,請在第一個foreach循環之後和第二個foreach循環之前嘗試使用unset()$v

0

任何「奇怪行爲」即發生可能是因爲你正在築巢的foreach循環,所以你需要改變第二露出$v的變數名稱作爲第一個$v會的範圍內可第二(嵌套)foreach。

0

如果您有類似

foreach($arr1 as $v 
{ 
    foreach($arr2 as $v) 
    { 
     // Code 
    } 
} 

我可以看到一個問題。否則,我們需要一個更好的「奇怪行爲」的定義。

-1

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環一前一後,不嵌套的,我無法想象,你看到什麼奇怪的行爲。

+1

請勿複製其他人的答案。 – 2010-09-08 16:42:32

+0

@Josh K:我看不到任何複製的東西...... – NikiC 2010-09-08 16:45:19

+0

@nikic:它與我的答案有很強烈的相似之處。 – 2010-09-08 17:21:37