【问题标题】:How to merge array by key values which are repeating如何通过重复的键值合并数组
【发布时间】:2020-09-08 18:26:14
【问题描述】:

我有一个这样的数组,我想要的是将子数组转换为具有多个唯一键的唯一键子数组。我尝试了 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
        )
)

【问题讨论】:

  • 数组中不能有重复的索引。

标签: php arrays merge key sub-array


【解决方案1】:

使用 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 2011-08-30
    • 2020-01-02
    • 2014-03-09
    • 2019-11-25
    • 1970-01-01
    • 2019-10-07
    相关资源
    最近更新 更多