こんにちは私は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
)
両方の配列を1つの配列にマージするために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
)
これらの重複したエントリを削除したい、またはマージする前にこれらを削除できますか?
array_unique(array_merge($array1,$array2), SORT_REGULAR);
すでに述べたように、 array_unique() は、単純なデータを処理する場合にのみ使用できます。オブジェクトの処理はそれほど単純ではありません。
Phpは、配列をマージしようとすると、配列メンバーの値を比較しようとします。メンバーがオブジェクトの場合、その値を取得できず、代わりにsplハッシュを使用します。 spl_object_hashの詳細はこちらをご覧ください
2つのオブジェクト、まったく同じクラスのインスタンスがあり、一方が他方への参照でない場合、単にプロパティの値に関係なく2つのオブジェクトを持つことになります。
マージされた配列内に重複がないことを確認するには、Imho自身でケースを処理する必要があります。
また、多次元配列をマージする場合は、 array_merge_recursive() over array_merge() の使用を検討してください。
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
array_unique()
を使用してみてください
これにより、配列のリスト内の重複データが排除されます。
2つの配列をマージしても重複は削除されません。2つの配列から一意になるように以下の例を試すことができます
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue");
$result=array_diff($a1,$a2);
print_r($result);