2014-03-04 40 views
2

我需要能够在该数组的相同foreach循环中使用array_push回显1和2。PHP-array_push在同一个数组的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 
} 
?> 

编辑: 通过不使用foreach但while循环

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

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

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

无法理解问题。你能详细说明一下吗? –

+1

你正在做什么? – hindmost

+1

在代码中使用引用的目的是什么? – zerkms

回答

3

我需要能够呼应1和2在同 foreach循环的array_push解决它自己该阵列。

将它爆炸。

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

foreach ($arr as &$arr_number) { 

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

会不会是一个无限循环? – KarelG

+2

它会怎样?仅供参考,[** Demo **](https://eval.in/109588) –

+0

您正在将一个变量推入您正在循环访问的数组中。我认为迭代器会检测新添加的项目,从而继续循环。但这是一个例子。我的混乱的借口。 – KarelG