0

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

2 回答 2

1

你可以使用array_map

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

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

于 2012-11-15T17:27:56.120 回答
0

如果您使用的是 PHP 5 >= 5.5.0 或 PHP 7,我认为解决此问题的更好方法是 using 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)
}
*/
于 2016-04-06T08:54:02.753 回答