循环中的数组是否可以更新?

时间:2018-08-03 06:20:32

标签: php

我想知道是否可以循环更新数组对象

<?php
foreach($arrObj as $value)
{
    if(is_array($value))
    {
       $arrObj = $value; // the foreach array object should change and run new value
    }
}
?>

2 个答案:

答案 0 :(得分:0)

php将遍历$arrObj的顶级元素的“视图”,因此更改$arrObj不会影响该循环。 $arrObj本身将像往常一样分配给$value,因此最后一个子数组将保存到$arrObj中。

答案 1 :(得分:0)

您不能在同一数组的foreach循环中更新数组的值,但可以与其他循环一起使用for和while ... while: 自己看看:

""

这三个循环实现相同的结果,并且打印出的结果是:

$array=[0,1,2,3,4,range(1,10)];
    for(;false!==key($array)&&NULL!==key($array);){
        $temp=[];
        list($k,$value)=each($array);
            print(str_repeat('#',32).'<br>');

        if(is_array($value))
            $array=$value;
        else
            print($value);
    }



$array=[0,1,2,3,4,range(1,10)];
    while(false!==key($array)&&NULL!==key($array)){
        $temp=[];
        list($k,$value)=each($array);
            print(str_repeat('#',32).'<br>');

        if(is_array($value))
            $array=$value;
        else
            print($value);
    }



$array=[0,1,2,3,4,range(1,10)];
    do{
        $temp=[];
        list($k,$value)=each($array);
            print(str_repeat('#',32).'<br>');

        if(is_array($value))
            $array=$value;
        else
            print($value);
    }   while(false!==key($array)&&NULL!==key($array));