如何在循环中向项目添加项目?

Hen*_*nry 8 php arrays foreach loops

foreach循环中,似乎PHP在开始时读取整个数组,因此如果您突然需要将新项目附加到数组,它们将不会被循环处理:

$a = array (1,2,3,4,5,6,7,8,9,10);

foreach ($a as $b)
    {
        echo " $b ";
        if ($b ==5) $a[] = 11;
    }
Run Code Online (Sandbox Code Playgroud)

只打印出来: 1 2 3 4 5 6 7 8 9 10

Bab*_*aba 17

只需创建要循环的数组的引用副本

$a = array(1,2,3,4,5,6,7,8,9,10);
$t = &$a; //Copy
foreach ( $t as $b ) {
    echo " $b ";
    if ($b == 5)
        $t[] = 11;
}
Run Code Online (Sandbox Code Playgroud)

或者只是使用 ArrayIterator

$a = new ArrayIterator(array(1,2,3,4,5,6,7,8,9,10));
foreach ( $a as $b ) {
    echo "$b ";
    if ($b == 5)
        $a->append(11);
}
Run Code Online (Sandbox Code Playgroud)

产量

 1 2 3 4 5 6 7 8 9 10 11
Run Code Online (Sandbox Code Playgroud)

观看现场演示

  • 尼斯.不知道ArrayIterator甚至存在.谢谢 (4认同)