来自多维数组的Array_values

时间:2012-03-14 00:03:17

标签: php arrays

数组看起来像

$arr = array(

  array('a', 'b'),
  array('c', 'd'),
  array('e', 'f'),

)

我希望得到一个包含第一列值的数组,例如array('a', 'c', 'e')

我知道可以通过迭代数组并将值存储在另一个数组中来轻松完成,但是有更短的方法,内置的PHP函数还是什么?

3 个答案:

答案 0 :(得分:9)

从PHP 5.5起,您可以使用array_column()

$records = array(
    array(
        'id' => 2135,
        'first_name' => 'John',
        'last_name' => 'Doe'
    ),
    array(
        'id' => 3245,
        'first_name' => 'Sally',
        'last_name' => 'Smith'
    ),
    array(
        'id' => 5342,
        'first_name' => 'Jane',
        'last_name' => 'Jones'
    ),
    array(
        'id' => 5623,
        'first_name' => 'Peter',
        'last_name' => 'Doe'
    )
);

$lastNames = array_column($records, 'last_name', 'id');

print_r($lastNames);

Array
(
    [2135] => Doe
    [3245] => Smith
    [5342] => Jones
    [5623] => Doe
)

答案 1 :(得分:6)

你可以这样做:

$foo = array_map('reset', $arr);

任何人在阅读完代码之后都需要知道重置的副作用是返回数组中的第一个值。这可能或者可能不再具有可读性 - 并且如果数组没有索引为零的条目,则它具有不工作的缺点:

$baz = array_map(function ($a) { return $a[0]; }, $arr);

如果你想要非常清楚并且不介意有一个功能:

function array_first($a) {
    return reset($a);
}

$baz = array_map('array_first', $arr);

答案 2 :(得分:1)

如果不使用任何循环,你就不能这样做......

为了做到这一点,只需使用循环并将值存储在新数组中或使用回调函数来获取值。