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

両方の foreach が同じように動作することを期待していました (キー = 6 まで反復)。

4

1 に答える 1

2

2 番目の foreach は 2 回目の foreach を実行しないため、つまり 1 回の反復のみを実行するため、要素が追加されたとしても、foreach が既に終了しているときに追加が行われます (要素が 1 つしかないという考えから始まり、ループし続ける必要はありません)

于 2012-10-08T22:27:30.577 に答える