2011-12-29 91 views
3

如何在php中完成此操作?還有,我需要推動更多的元素添加到數組我通過讓他們也打不通循環循環例:將元素push到數組中,然後在for循環中php

$j = array(1,2,3); 
foreach ($j as $i) 
{ 
    echo $i . "\n"; 
    if ($i <= 3) 
     array_push($j, 5); 
} 

應該打印123555,但它停靠在123

是有辦法圍繞這個在PHP?

回答

3

foreach適用於數組副本,而不是原始數組(在特定條件下)。這就是爲什麼你沒有看到循環中反映出來的變化。

你會得到預期的輸出,當你通過循環參考:

foreach ($j as &$i) 
{ 
    // ... 
} 

輸出:

 
1 
2 
3 
5 
5 
5 
+0

ohh好的謝謝,改爲for循環,它的工作原理。 – user740521 2011-12-29 17:16:36

+0

@ user740521:我只是添加了一些信息。 – 2011-12-29 17:19:01

1

你爲什麼不嘗試在:

$i = 0; 
$j = array(1, 2, 3); 

while (count($j)) 
{ 
    echo array_shift($j); 

    if ($i++ <= 3) 
    { 
     array_push($j, 5); 
    } 
} 
2

添加&到通過參考。默認值($j的副本)已通過。

$j = array(1,2,3); 
foreach ($j as $i=>&$v) 
{ 
    echo "$i=>$v\n"; 
    if ($i <= 3) 
     array_push($j, 5); 
} 
2

PHP不支持這個。從手冊:

由於foreach依靠內部數組指針在循環內更改它可能會導致意外的行爲。

http://php.net/manual/en/control-structures.foreach.php

然而,這個代碼將工作,雖然我不靠這個基礎上什麼說明書上說。

<? 
header('content-type: text/plain'); 

$j = array(1,2,3); 

foreach ($j as &$v) 
{ 
    echo "$v\n"; 
    if ($v <= 3) 
    { 
     array_push($j, 5); 
    } 

} 
相關問題