更新它内部的foreach变量



我有一个数组:

$colors = array("red", "green");

我在foreach中使用这个数组,我想在foreach内部更新这个数组,例如:

foreach( $colors as $color ){
if( $color=='green' ){
array_push($colors, 'blue');  //now $colors is ["red", "green", "blue"]
}
echo $color . "<br>";
}

结果是:

red
green

并且CCD_ 4在结果中不是回声!

如何更新它内部的foreach变量?


更新:我用for做这件事,它是有效的。

$colors = array("red", "green");
for( $i=0; $i < count($colors); $i++ ){
if( $colors[$i]=='green' ){
array_push($colors, 'blue'); //now $colors is ["red", "green", "blue"]
}
echo $colors[$i]."<br>";
}

结果是

red
green
blue

我如何使用foreach做到这一点?

如果您作为引用传递(https://www.php.net/manual/en/language.references.php)(参见&$color(它将工作,因为它将指向相同的内存地址,从而更新$colorsvar:

<?php
$colors = array("red", "green");
foreach( $colors as &$color ){
if( $color=='green' ){
array_push($colors, 'blue');
}
echo $color . "<br>";
}

当然,如果使用print_r($colors);在循环外打印$colors,则不需要这样做。此传递引用仅在循环内部需要。

foreach($colors as $color){
if( $color=='green' ){
$colors[]= 'blue';  //now $colors is ["red", "green", "blue"]
}
}

现在使用foreach循环打印$color变量下的所有值

foreach($colors as $color){
echo $color."n";
}

最新更新