如何从这样的数据中创建具有结构的新数组:[id] => [prop]
$foo = array(
array('id' => 2, 'prop' => 'val2'),
array('id' => 1, 'prop' => 'val1'),
array('id' => 3, 'prop' => 'val3'),
);
但以优雅的方式,没有foreach循环?
在 PHP 5.5 中:
$result = array_column($foo, 'prop', 'id');
对于 PHP<5.5:
$result = array_combine(
array_map(function($x)
{
return $x['id'];
}, $foo),
array_map(function($x)
{
return $x['prop'];
}, $foo),
);
我必须指出,尽管所有内容都隐藏在回调甚至内置函数中,但它仍然是内部循环 - 因此,就复杂性而言,它与普通循环相同。
对于 PHP <5.5,你也可以使用 array_reduce 来获取结果:
$result = array_reduce($foo, function($v, $w) {
$v[$w['id']] = $w['prop'];
return $v;
});