3

我有一个二维数组(从 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);
4

1 回答 1

10

如果您使用的是 PHP5.5,那么您可以使用该array_column功能 -文档

$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));

这是 array_combine 文档

于 2014-08-14T05:05:12.887 回答