2012-10-08 64 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