首页 > 解决方案 > php - 更新内部的 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

结果blue不是回声!

我怎样才能更新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

标签: phparrays

解决方案


如果您作为参考传递(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>";
}

当然,如果您$colors在循环之外打印,则无需使用print_r($colors);. 仅在循环内部才需要按引用传递。


推荐阅读