Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按具有唯一值的键合并两个数组_Php_Arrays - Fatal编程技术网

Php 按具有唯一值的键合并两个数组

Php 按具有唯一值的键合并两个数组,php,arrays,Php,Arrays,我有两个数组(在foreach循环中),它们可能具有也可能不具有与下面的代码示例相同的动态生成密钥,例如298184182 我想合并相同键的值并生成一个数组 注意:数组是foreach循环中的结果。 键是由id动态生成的,两个数组中的项可能相同,也可能不同 循环中的结果数组 需要单个数组 假设第二个数组也可以有不在第一个数组中的键,您可以从两个数组中找到所有唯一的键,然后对它们进行迭代,将array1和array2中的值合并到一个结果数组中: $keys = array_unique(array

我有两个数组(在foreach循环中),它们可能具有也可能不具有与下面的代码示例相同的动态生成密钥,例如
298184182

我想合并相同键的值并生成一个数组

注意:数组是foreach循环中的结果。
键是由id动态生成的,两个数组中的项可能相同,也可能不同

循环中的结果数组 需要单个数组
假设第二个数组也可以有不在第一个数组中的键,您可以从两个数组中找到所有唯一的键,然后对它们进行迭代,将
array1
array2
中的值合并到一个结果数组中:

$keys = array_unique(array_merge(array_keys($array1), array_keys($array2)));

$result = array();
foreach ($keys as $key) {
    $result[$key]['dates'] = array_merge($array1[$key]['dates'] ?? [], $array2[$key]['dates'] ?? []);
}
print_r($result);

这是否回答了您的问题@UrmatZhenaliev谢谢,很接近,但是Nick的回答解决了问题。非常感谢。你是个和蔼可亲的人。我尝试了两天各种循环,但没有运气。谢谢你的帮助。@codeloper别担心,我很高兴能帮上忙。
Array
(
    [298] => Array
        (
            [dates] => Array
                (
                    [0] => 2020-12-26 10:39:13
                    [1] => 2020-12-15 12:18:23
                    [2] => 2020-12-22 12:27:46
                    [3] => 2020-12-24 10:51:00
                    [4] => 2020-12-26 10:01:44
                    [5] => 2020-12-26 10:31:55
                    [6] => 2020-12-26 10:48:33
                    [7] => 2020-12-26 10:56:34
                    [8] => 2020-11-16 07:38:26
                    [9] => 2020-11-16 07:47:05
                    [10] => 2020-12-15 12:20:07
                    [11] => 2020-12-24 10:52:35
                )

        )

    [184] => Array
        (
            [dates] => Array
                (
                    [0] => 2020-11-16 07:52:33
                    [1] => 2020-12-24 13:01:14
                    [2] => 2020-11-16 07:53:12
                )

        )

    [182] => Array
        (
            [dates] => Array
                (
                    [0] => 2021-01-05 08:50:27
                )

        )

)
$keys = array_unique(array_merge(array_keys($array1), array_keys($array2)));

$result = array();
foreach ($keys as $key) {
    $result[$key]['dates'] = array_merge($array1[$key]['dates'] ?? [], $array2[$key]['dates'] ?? []);
}
print_r($result);