2011-08-04 189 views
3

我通常具有2維數組:多維數組陣列

array(
    array('key' => 'value1'), 
    array('key' => 'value2'), 
    ... 
); 

,需要形成1維陣列:

array('value1', 'value2') 

這可以很容易地用foreach完成,但我想知道是否有一些PHP 5.3的方式來做到這一點。

+0

http://stackoverflow.com/questions/1319903/how-to-flatten-a-multidimensional-array –

+0

http://stackoverflow.com/questions/2473844/how-to-get-array-of-values -from-an-associative-arrays –

+0

我不會知道任何內置函數,它從這樣的數組結構返回列*。你所能做到的只是隱藏所需的循環(使用閉包)。 – Yoshi

回答

6
$new_array = array_map(function($el) { return $el['key']; }, $array); 
0
array_reduce($array,function($arr,$new){ 
    $arr[]=$new['key']; 
},array()) 
0

在情況下,當你在內部數組只有一個值:

$values = array_map('array_pop', $yourArray); 

回調可能是函數名,那麼爲什麼重新實現已經存在爲核心功能的東西嗎? :)

1
<?php 
    $arr = array(array(141,151,161,140),2,3,array(101,202,array(303,404),407)); 
    function array_oned($arrays){ 
     static $temp_array = array(); 
     foreach($arrays as $key){ 
      if(is_array($key)){ 
       array_oned($key); 
      }else { 
       $temp_array [] = $key; 
      } 
     } 
     return $temp_array; 
    } 
    echo print_r(array_oned($arr)); 

?> 

您的意思是這樣的嗎?