简单的foreach循环迭代

时间:2016-09-01 13:23:24

标签: php arrays foreach

我有一个非常基本的问题。我想迭代一个多维数组。假设我想在不破坏foreach循环的情况下添加if语句来检查值...我的目的是获取特定值的数组

$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, )

2 个答案:

答案 0 :(得分:1)

您需要推送数组中的新元素。现在你覆盖它们。

$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>";

答案 1 :(得分:0)

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

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