使多维数组一维,没有foreach



我已经尝试了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
)

你可以使用array_map

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

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

如果您使用的是 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)
}
*/

最新更新