2012-11-15 80 views
0

我已經嘗試了array_reduce和array_merge方法,但他們似乎沒有做我所期望的。有沒有這樣做的方式沒有foreach?使多維數組一維沒有foreach

我需要一個數組轉換如:

Array 
(
    [0] => Array 
     (
      [id] => 2 
     ) 

    [1] => Array 
     (
      [id] => 3 
     ) 

    [2] => Array 
     (
      [id] => 4 
     ) 

) 

分爲:

Array 
(
    [0] => 2 
    [1] => 3 
    [2] => 4 
) 

回答

1

你可以使用array_map

$flat = array_map(function($el) { return $el['id']; }, $arr); 

不是這是PHP 5.3。如果你使用的是5.2,你必須定義一個函數或使用create_function而不是象我這裏的匿名傳遞。

+0

這作品,你知道這樣做的方式,而不必明確說明該ID作爲關鍵名稱?例如,我想使用這個函數來獲得可能與id不同的結果。 – Motive

+0

如果你只會在數組中有一個元素,你可以使用'array_pop'或'array_shift'來抓取那個元素,而不是使用這個鍵。或者你可以使用@rambocoder解決方案 – prodigitalson

0

如果你使用PHP 5> = 5.5.0或PHP 7,我想一個更好的解決這個問題是使用array_column,因爲它是出於這樣的目的製作:

$multidimensionalArray = [ 
    [ 
     'id' => 2, 
     'somethingElse' => 'foo' 
    ], 
    [ 
     'id' => 3, 
     'somethingElse' => 'bar' 
    ], 
    [ 
     'id' => 4, 
     'somethingElse' => 'baz' 
    ], 
    [ 
     'id' => 5, 
     'somethingElse' => 'bam' 
    ], 
]; 

$justTheIds = array_column($multidimensionalArray, 'id'); 

var_dump($justTheIds); 

/* 
    array(4) { 
    [0]=> 
    int(2) 
    [1]=> 
    int(3) 
    [2]=> 
    int(4) 
    [3]=> 
    int(5) 
} 
*/