什么是最简单的转换方式
$a = array(
array("id" => 1, "name" => "a1"),
array("id" => 2, "name" => "a2")
);
Run Code Online (Sandbox Code Playgroud)
至
$b = array(
"a1" => array("id" => 1, "name" => "a1"),
"a2" => array("id" => 2, "name" => "a2")
);
Run Code Online (Sandbox Code Playgroud)
我期待PHP有一些函数式编程工具来做类似的事情:
$b = map($a, function($item) {
return $item["name"];
});
Run Code Online (Sandbox Code Playgroud)
但我没找到一个.
小智 12
您可以使用PHP array_column()函数.对于您的用例,第二个参数应该是null返回完整数组.
$a = array(
array("id" => 1, "name" => "a1"),
array("id" => 2, "name" => "a2")
);
$b = array_column($a, null, 'name');
Run Code Online (Sandbox Code Playgroud)
并且print_r($b)会导致
Array
(
[a1] => Array
(
[id] => 1
[name] => a1
)
[a2] => Array
(
[id] => 2
[name] => a2
)
)
Run Code Online (Sandbox Code Playgroud)
我看到的唯一解决方案是遍历数组并手动创建一个新数组。
例如,像这样:
$new_array = [];
foreach ($array as $value)
$new_array[$value['name']] = $value;
Run Code Online (Sandbox Code Playgroud)