2012-10-08 65 views
2

为什么this的foreach:差(添加新元素的数组)

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

输出此:

abccccc 

而且this之一:

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

输出:

a 

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

+0

修改您在foreach循环中循环的对象是一个坏主意。不推荐。随时编辑内容,避免头痛。 – TheZ

回答

2

因为第二个foreach没有第二次触发事件,也就是只做了一次迭代,所以即使添加了一个元素,当foreach已经结束时也会发生添加(它始于只有它的想法一个元素,它不会继续循环)

+0

优化...哦,好。谢谢! :) – dmmd