123

こんにちは、2 つの配列をマージしようとしていますが、最終的な配列から重複した値を削除したいと考えています。

ここに私の配列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両方の配列を 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

[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

)

これらの重複したエントリを削除したい、またはマージする前にこれらを削除できますか...助けてください..ありがとう!!!!!!!!

4

8 に答える 8

270
array_unique(array_merge($array1,$array2), SORT_REGULAR);

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

于 2012-11-20T09:14:09.203 に答える
9

既に述べたように、array_unique()は使用できますが、単純なデータを扱う場合に限られます。オブジェクトの扱いはそれほど単純ではありません。

PHP が配列をマージしようとすると、配列メンバーの値を比較しようとします。メンバーがオブジェクトの場合、その値を取得できず、代わりに spl ハッシュを使用します。spl_object_hash の詳細については、こちらをご覧ください。

簡単に言えば、まったく同じクラスのインスタンスである 2 つのオブジェクトがあり、そのうちの 1 つが他のオブジェクトへの参照でない場合、プロパティの値に関係なく、2 つのオブジェクトを持つことになります。

マージされた配列内に重複がないことを確認するには、自分でケースを処理する必要があります。

また、多次元配列をマージする場合は、array_merge()よりもarray_merge_recursive( ) を使用することを検討してください。

于 2012-11-20T09:20:37.803 に答える
7

2 つのアレイをマージし、重複を削除します

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

このリンクを試してください link1

于 2012-11-20T09:16:25.453 に答える
4

を使用してみてくださいarray_unique()

これにより、配列のリスト内の重複データが削除されます..

于 2012-11-20T09:15:23.460 に答える
1

このコードを使用して、目的の結果を得ることができます。重複を削除します。

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue");

$result=array_unique(array_merge($a1,$a2));

print_r($result);
于 2020-10-29T13:21:28.197 に答える
1

私の場合、私は使用しなければなりませんでした->toArray()

array_unique(array_merge($array1->toArray(),$array2->toArray()), SORT_REGULAR);

これらの答えの両方を組み合わせた結果

于 2021-03-01T09:12:23.867 に答える