简单的foreach循环迭代


Simple foreach loop iteration

我有一个非常基本的问题。我想遍历一个多维数组。假设我想添加一个if语句来检查值而不中断foreach循环…我的目的是获取特定值

的数组
$foo =  [
     'one'=> [
             'id'=>1,
             'name'=>'32dsfd23'
             ],
    'two' => [
             'id'=>1,
             'name'=>'322e3'
             ],
    ];
    function new_func($arr){
        $data=[];
        foreach($arr as $val) {
                foreach($val as $key =>$foofoo) {
                    if(array_key_exists('id',$val)){
                    $data['new_arr']=$foofoo;
                }
                }
        }
        return $data;
    }
    echo "<pre>";
    print_r(new_func($foo));
    echo "</pre>";

结果是:Array ( [new_arr] => 322e3 )

我想得到这样的结果: Array ( [new_arr] [0]=> 32dsfd23, [1]=> 322e3, )

需要将新元素推入数组。现在你覆盖它们。

$foo =  [
     'one'=> [
         'id'=>1,
         'name'=>'32dsfd23'
         ],
    'two' => [
         'id'=>1,
         'name'=>'322e3'
         ],
    ];
    function new_func($arr){
        $data=[];
        foreach($arr as $val) {
            foreach($val as $key =>$foofoo) {
                if(array_key_exists('id',$val)) {
                    $data['new_arr'][] = $foofoo;
                }
            }
        }
        return $data;
    }
    echo "<pre>";
    print_r(new_func($foo));
    echo "</pre>";

当你这样做的时候$data['new_arr']=$foofoo;您正在覆盖$data['new_arr']中的值。

您需要将其更改为$data['new_arr'][]=$foofoo;,它将在该数组中插入值。