在没有foreach的情况下使多维数组成为一维

时间:2012-11-15 17:23:43

标签: php arrays

我已经尝试过array_reduce和array_merge方法,但它们似乎没有达到我的预期。有没有一种方法可以在没有foreach的情况下做到这一点?

我需要转换一个数组,如:

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

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

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

)

分为:

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

2 个答案:

答案 0 :(得分:1)

您可以使用array_map

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

这不适用于php 5.3。如果您使用5.2,则必须定义一个函数或使用create_function而不是像我在这里那样传递匿名。

答案 1 :(得分: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)
}
*/