2016-09-01 134 views
-1

我有一个非常基本的问题。我想遍历一个多维数组。假设我想添加一个if语句来检查值没有打破foreach循环......我的目的是为了获得特定值简单的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, )

+0

$ data ['new_arr'] [] = $ foofoo; 2维数组 –

回答

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>"; 
+0

明白了!感谢数百万! – user3387719

+0

不客气!如果你想将答案标记为已接受的答案。 –

0

当你 $data['new_arr']=$foofoo; 你覆盖的价值在$数据[ 'new_arr']。

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