将二维数组通过array_map转换为一维关联数组

3
我有一个二维数组(从PDO MySQL数据库返回),形式如下:
{
  [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);
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的文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接