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

Rav*_*avi 99 php arrays wordpress multidimensional-array

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

这是我的阵列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
)
Run Code Online (Sandbox Code Playgroud)

这是我的阵列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

)
Run Code Online (Sandbox Code Playgroud)

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

)
Run Code Online (Sandbox Code Playgroud)

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

C. *_* E. 210

array_unique(array_merge($array1,$array2), SORT_REGULAR);
Run Code Online (Sandbox Code Playgroud)

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

  • 默认情况下,array_unique尝试将数组值用作字符串.因此,错误@Ravi遇到了.如果您的数组只是字符串,那么您不需要第三个参数.如果它不是字符串,或者内容不能隐式转换为字符串,则需要SORT_REGULAR参数. (7认同)
  • @ Hemantxp>没有SORT_REGULAR它给出了这个错误:``可捕获的致命错误:类stdClass的对象无法转换为字符串`` (4认同)
  • 值得注意的是,array_unique返回已过滤的数组(而不是直接作用于传入的数组参数),因此您需要先存储结果才能使用它 (4认同)

Nik*_*ski 7

如前所述,可以使用array_unique(),但仅在处理简单数据时使用.对象不是那么容易处理.

当php尝试合并数组时,它会尝试比较数组成员的值.如果成员是对象,则它无法获取其值并使用spl散列.在这里阅读更多关于spl_object_hash的内容.

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

为了确保你在合并数组中没有任何重复项,Imho你应该自己处理这个案例.

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


小智 5

它将合并两个数组并删除重复项

<?php
 $first = 'your first array';
 $second = 'your second array';
 $result = array_merge($first,$second);
 print_r($result);
 $result1= array_unique($result);
 print_r($result1);
 ?>
Run Code Online (Sandbox Code Playgroud)

试试这个链接 link1