当前位置: 首页 > 知识库问答 >
问题:

如何在循环过程中向数组中添加项?[副本]

太叔乐家
2023-03-14

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


共有3个答案

范承教
2023-03-14

一种简单的方法是创建第二个数组,该数组将保留旧数组,并且在循环时可以在那里添加新值。

在循环结束时,新数组将插入旧数组和新数组的值

潘意
2023-03-14

本着自己提问和回答问题的精神,这是我发现的最好的解决方法:将其转换为time循环。

$a = array (1,2,3,4,5,6,7,8,9,10);
$i = 0;
while ($i < count($a))
    {
        $b =  $a[$i];
        echo " $b ";
        if ($b ==5) $a[] = 11;
        $i++;
    }

它不能正确地发出

宰父志新
2023-03-14

只需创建您正在循环的数组的参考副本

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

或者只使用数组迭代器

$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

观看现场演示

 类似资料:
  • 我在mysql数据库中有一个数组数据,我想在使用Ajax得到结果后,用for循环逐个显示出来。过程是这样的。 这是将呈现每个项的段落 null 当我尝试使用for循环时,它会说语法错误,意外的for循环被取走,我该如何解决这个问题,例如,这里我使用sample for循环来使事情尽可能简单。

  • 我想把这个代码的答案四舍五入到小数点后两位。我尝试了很多方法,但没有一种对我有效。请帮忙!

  • 我有以下2个数组,我需要根据第二个的ID值添加第一个的值作为Key,这样我就可以订购第二个数组DESC: $视图: 我有以下数组对象: $most_seen_list: 在下一个foreach中,我将完成它,我想更改使用我从另一个数组中获得的值设置键: 预期产出:

  • 问题内容: 我需要一些帮助,将一些项目添加到中。因此,我有两个组合框,其中一个根据所选项目填充另一个。 我的问题是,用于新项目,它可以工作,但是如果我为组合框选择另一个选项,它将添加新项目,但先前的项目不见了-新项目下面有空白项目。 我以为每次我从第一个组合框选择一个新选项来清除第二个组合框的内容。所以我在第二个上使用了-但没有用。 我就是这样想的: 上面是第一次更改时执行的功能的一部分。 问题答

  • 问题内容: 我想在循环内添加延迟/睡眠: 我这样尝试过: 只有第一种情况是正确的:显示后,它将等待3秒钟,然后显示,但随后将不断重复。 我想要的是在显示3秒之后显示出来,然后它需要第二次等待3秒,依此类推。 问题答案: 该函数是非阻塞的,将立即返回。因此,您的循环将非常快速地迭代,并且将快速连续地发起3秒超时触发。这就是为什么您的第一个警报会在3秒钟后弹出,而其余所有警报都将连续不断地出现。 您可

  • 请考虑以下代码: 请不要告诉我,我可以做这个任务与数字为基础的索引与计数的帮助。