首页  >  文章  >  后端开发  >  如何合并多个 PHP 数组同时删除重复值?

如何合并多个 PHP 数组同时删除重复值?

Barbara Streisand
Barbara Streisand原创
2024-11-13 00:16:01673浏览

How can I merge multiple PHP arrays while removing duplicate values?

在 PHP 中合并和删除重复数组

使用 PHP 数组时,通常需要将多个数组合并为一个数组。但是,避免最终数组中出现重复值至关重要。

合并两个数组

要合并两个数组,您可以使用 array_merge() 函数:

$array1 = [
    (object) [
        'ID' => 749,
        'post_author' => 1,
        'post_date' => '2012-11-20 06:26:07',
        'post_date_gmt' => '2012-11-20 06:26:07'
    ]
];

$array2 = [
    (object) [
        'ID' => 749,
        'post_author' => 1,
        'post_date' => '2012-11-20 06:26:07',
        'post_date_gmt' => '2012-11-20 06:26:07'
    ]
];

$mergedArray = array_merge($array1, $array2);

$mergedArray 将包含 $array1 和 $array2 中的元素。但是,它也会包含 $array2 中的重复对象,这可能是不可取的。

删除重复项

要删除重复项,您可以使用 array_unique()功能。该函数接受一个数组作为参数,并返回一个删除了重复值的新数组。您可以组合 array_merge() 和 array_unique() 来合并数组并删除重复项:

$mergedAndUniquedArray = 
array_unique(array_merge($array1, $array2), SORT_REGULAR);

SORT_REGULAR 标志可确保在删除重复项之前数组按其元素的值排序。如果您想在合并时保持原始数组的顺序,这一点非常重要。

您还可以结合使用 array_map() 和 spl_object_hash() 从数组中删除重复的对象:

$removeDuplicatesUsingObjects = function ($object) {
    return spl_object_hash($object);
};

$mergedAndUniquedArray = array_map($removeDuplicatesUsingObjects, 
array_merge($array1, $array2));
$mergedAndUniquedArray = array_unique($mergedAndUniquedArray);

该方法使用 spl_object_hash() 函数为每个对象生成唯一的标识符,然后根据这些标识符删除重复项。

以上是如何合并多个 PHP 数组同时删除重复值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn