PHP,如何轻松地将索引数组转换为关联数组

use*_*272 6 php arrays

什么是最简单的转换方式

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

  • 我认为 `array_column` 是 php 5.5 以上,而不是 php7 (2认同)

Jer*_*dev 6

我看到的唯一解决方案是遍历数组并手动创建一个新数组。

例如,像这样:

$new_array = [];
foreach ($array as $value) 
    $new_array[$value['name']] = $value;
Run Code Online (Sandbox Code Playgroud)