我有一个二维数组(从PDO MySQL DB返回),格式为
{
[0] => {
"ID" => 1,
"Name" => "Name1"
},
[1] => {
"ID" => 2,
"Name" => "Name2"
},
[2] => {
"ID" => 3,
"Name" => "Name3"
}
}
是否有优雅/高效的解决方案将其转换为
{
[1] => "Name1",
[2] => "Name2",
[3] => "Name3"
}
我知道我可以循环并以这种方式创建数组,但我觉得这可能比花哨的array_map效率低。
基本上我想要类似......
array_map(
function ($value) {
return $value['ID']=>$value['Name'];
}, $ResultArray);
答案 0 :(得分:10)
如果您使用的是PHP5.5,那么您可以使用array_column
功能 - documentation
$names = array_column($records, 'Name', 'ID');
否则,array_map
解决方案可能会得到最好的解决方案:
$names = array_combine(array_map(function($value) {
return $value['ID'];
}, $records), array_map(function($value) {
return $value['Name'];
}, $records));