如何通过重复的键值合并数组

How to merge array by key values which are repeating

我有一个这样的数组,我想要的是将子数组转换为具有多个唯一键的唯一键子数组。我尝试了 array_merge_recursive 函数,但它不起作用,因为我在循环中有多个数组,并且该函数适用于 2 或 3 个数组。

Array
(
    [0] => Array
        (
            [fromWho] => abc@email.se
        )

    [1] => Array
        (
            [tid] => 2013-05-05 23:35
        )

    [2] => Array
        (
            [answer] => Company
        )

    [3] => Array
        (
            [name] => message
        )

    [4] => Array
        (
            [label] => Message
        )

    [5] => Array
        (
            [fromWho] => bcd@email.se
        )

    [6] => Array
        (
            [tid] => 2013-05-05 23:35
        )

    [7] => Array
        (
            [answer] => Star Company
        )

    [8] => Array
        (
            [name] => name
        )

    [9] => Array
        (
            [label] => Name
        )
)

我想要这样的数组 数组键顺序无关紧要:

Array
(
    [0] => Array
        (
            [label] => Message
            [name] => message
            [answer] => Company
            [tid] => 2013-05-05 23:35
            [fromWho] => abc@email.se
        )

    [0] => Array
        (
            [label] => Name
            [name] => name
            [answer] => Star Company
            [tid] => 2013-05-05 23:35
            [fromWho] => bcd@email.se
        )
)

使用 array_chunk() 将数组分组为 5 个元素的块。然后你可以将每个块转换成一个关联数组。

$chunks = array_chunk($data, 5);
$result = array_map(function($chunk) {
    $arr = [];
    foreach ($chunk as $entry) {
        foreach ($entry as $key => $val) {
            $arr[$key] = $val;
        }
    }
    return $arr;
}, $chunks);