[php] 2つの配列を1つの配列にマージする(Duplicatesも削除する)



1 Answers

それは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

Question

こんにちは私は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

)

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




既に述べたように、単純なデータを扱う場合にのみ、 link1を使うことができます。 オブジェクトはそれほど単純ではありません。

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

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

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

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




Related