从键和某些子数组值创建数组的简单方法?

时间:2016-06-05 02:44:27

标签: php arrays multidimensional-array

我有一个如下所示的源数组:

$data = array(
    'foo' => array(
        'bar' => 'foo_bar',
        'baz' => 'foo_baz'
    ),
    'fizz' => array(
        'bar' => 'fizz_bar',
        'baz' => 'fizz_baz'
    )
);

我想通过选择一个键来创建另一个数组:barbaz,它将返回具有指定键值的所有根键?

some_function($data, 'bar') == array(
    'foo' => 'foo_bar',
    'fizz' => 'fizz_bar'
);

是否有内置的php函数可以在不进行自己的循环的情况下生成以下结果?

1 个答案:

答案 0 :(得分:1)

$data = array(
    'foo' => array(
        'bar' => 'foo_bar',
        'baz' => 'foo_baz'
    ),
    'fizz' => array(
        'bar' => 'fizz_bar',
        'baz' => 'fizz_baz'
    )
);

选择bar

$result = array_combine(
    array_keys($data),
    array_column($data, 'bar')
);

以下是一个例子:

php > var_dump(array_combine(array_keys($data), array_column($data, 'bar')));
array(2) {
  ["foo"]=>
  string(7) "foo_bar"
  ["fizz"]=>
  string(8) "fizz_bar"
}

请注意,{5.5}中引入了array_column()