2010-09-08 114 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