我有一个数组:
$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
(它将工作,因为它将指向相同的内存地址,从而更新$colors
var:
<?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";
}