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