PHP-array#u推入同一数组的foreach循环不';t更新数组

PHP-array#u推入同一数组的foreach循环不';t更新数组,php,arrays,loops,foreach,Php,Arrays,Loops,Foreach,我需要能够在同一个数组的foreach循环中使用数组_push来回显1和2 <?php $arr = array('1'); foreach ($arr as &$arr_number) { echo "$arr_number\n"; //this print 1 array_push($arr, '2'); } foreach ($arr as &$arr_number) { echo "$arr_number\n"; //this print 1

我需要能够在同一个数组的foreach循环中使用数组_push来回显1和2

<?php
$arr = array('1');

foreach ($arr as &$arr_number) {
   echo "$arr_number\n"; //this print 1
   array_push($arr, '2');
}

foreach ($arr as &$arr_number) {
   echo "$arr_number\n"; //this print 1 and then 2
}
?>

编辑: 通过使用while循环而不是foreach来解决这个问题

    <?php
    $arr = array('1');

 while ( list($key, $value) = each($arr) ) {
    echo "$value\n";

    if ( !in_array('2', $arr) ) {
       array_push($arr, '2');
    }
 }
 ?>

我需要能够用相同的数组推送来回送1和2 该数组的foreach循环

<?php
$arr = array('1');

foreach ($arr as &$arr_number) {
   echo "$arr_number\n"; //this print 1
   array_push($arr, '2');
}

foreach ($arr as &$arr_number) {
   echo "$arr_number\n"; //this print 1 and then 2
}
?>
内爆

<?php
$arr = array('1');

foreach ($arr as &$arr_number) {

   array_push($arr, '2');
   echo implode(' ',$arr); //"prints" 1 2
}

无法理解问题。你能详细说明一下吗?你想做什么?在你的代码中使用引用的目的是什么?@zerkms:是的,使用引用可能没有意义。。。没关系,没有引用的代码仍然不能使用foreach,这不是一个无限循环吗?您正在将一个变量推送到一个数组中,并在其中循环。我认为迭代器将检测新添加的项,从而继续循环。但这是当时的一个例子。我为我的困惑辩解。@KarelG上面的
内爆
函数只是将所有数组值与一个空格连接在一起。它不会影响循环。迭代器也没有检测到新添加的值,这就是为什么OP只接收
1
作为输出的原因。@KarelG不,不是。看到@KarelG yes的第一个答案,那将是一个无限循环,我必须杀死PHP:)我添加了check-in_数组以使其工作