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