2012-11-15 81 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) 
} 
*/