PHP - 将两个数组合并为一个数组(也删除重复项)

嗨,我正在尝试合并两个数组,并且还想从最终数组中删除重复的值。

这是我的数组 1:

Array
    (
    [0] => stdClass Object
    (
    [ID] => 749
    [post_author] => 1
    [post_date] => 2012-11-20 06:26:07
    [post_date_gmt] => 2012-11-20 06:26:07
)

这是我的数组 2:

Array
(
[0] => stdClass Object
(
[ID] => 749
[post_author] => 1
[post_date] => 2012-11-20 06:26:07
[post_date_gmt] => 2012-11-20 06:26:07

)

我用于将两个数组合并为一个数组。它给出这样的输出array_merge

Array
(
[0] => stdClass Object
(
[ID] => 749
[post_author] => 1
[post_date] => 2012-11-20 06:26:07
[post_date_gmt] => 2012-11-20 06:26:07

[1] => stdClass Object
(
[ID] => 749
[post_author] => 1
[post_date] => 2012-11-20 06:26:07
[post_date_gmt] => 2012-11-20 06:26:07

)

我想删除这些重复的条目,或者我可以在合并之前删除这些条目...请帮忙..谢谢!!!!!!!


答案 1
array_unique(array_merge($array1,$array2), SORT_REGULAR);

http://se2.php.net/manual/en/function.array-unique.php


答案 2

如前所述,可以使用array_unique(),但只有在处理简单数据时才能使用。这些对象的处理并不容易。

当 php 尝试合并数组时,它会尝试比较数组成员的值。如果成员是对象,则它无法获取其值,而是使用 spl 哈希。在此处阅读有关spl_object_hash的更多信息。

简单地说,如果你有两个对象,同一类的实例,如果其中一个不是对另一个对象的引用 - 你最终将有两个对象,无论它们的属性值如何。

为了确保合并的数组中没有任何重复项,恕我直言,您应该自己处理这种情况。

此外,如果要合并多维数组,请考虑在array_merge()上使用array_merge_recursive()。