php - 如何在循环遍历数组时将项目添加到数组?

标签 php arrays loops foreach

<分区>

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;
    }

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

最佳答案

只需创建您正在循环的数组的引用副本

$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;
}

或者只使用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);
}

输出

 1 2 3 4 5 6 7 8 9 10 11

See Live Demo

关于php - 如何在循环遍历数组时将项目添加到数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13214716/

相关文章:

php - 从多个复选框形成查询字符串

python - 如果项目是非数字或大于特定值,如何从列表列表中删除列表?

c++ - 拓扑排序算法不能正常工作

php - 如何从 php-resque 中的作业内部获取 jobid?

php - mysql 数据库 PHP 表

c++ - 从 C++ 中的函数返回指针

c - 使用空格分隔符将文件读入 C 数组

c++ - 如何返回一维大小未知的二维数组?

python - 在Python中通过字符串制作A ROT13

php - Laravel 将我的 CRUD 迁移到另一个项目