2

为什么这个foreach:

$abc = array('a','b');
foreach ($abc as $k => &$a) {
    echo $a;    
        $abc[] = 'c';
        if ($k > 5) die;
}

输出这个:

abccccc

这个

$abc = array('a');
foreach ($abc as $k => &$a) {
    echo $a;    
    $abc[] = 'c';
    if ($k > 5) die;
}

输出这个:

a

我希望两个 foreaches 的行为方式相同(迭代直到 key = 6)。

4

1 回答 1

2

因为第二个 foreach 不会再次触发 foreaches,即只进行一次迭代,因此即使添加了一个元素,添加也会发生在 foreach 已经结束时(它从只有一个元素的想法开始,并且它没有继续循环)

于 2012-10-08T22:27:30.577 回答