Php数组转换

时间:2016-01-14 09:59:08

标签: php arrays

编辑:我刚才发现我的情况有点复杂。我因此编辑了这个问题。

我有一个这种格式的数组:

[
    [
        "key" => "key1",
        "field1" => "a1",
        "field2" => "b1"
    ],
    [
        "key" => "key2",
        "field1" => "a2",
        "field2" => "b2"
    ]
]

我想定义一个函数将其转换为:

[
    "key1" => [
        "field1" => "a1",
        "field2" => "b1"
    ],
    "key2" => [
        "field1" => "a2",
        "field2" => "b2"
    ]
]

另一个扭转过程的功能。

我设法写了第一个函数

function ($array, $key) {
    return array_reduce($array, function ($carry, $item) use ($key) {
        $new = array_diff_key($item, [$key=>0]);
        $carry[$item[$key]] = $new;
        return $carry;
    }, []);
}

但现在我遇到了相反的问题。

PS:我正在努力避免循环

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

PHP> = 5.5有一个名为array_column()的内置函数可以为您执行此操作:

$array = array_column($array, 'value', 'key');