PHP での配列のマージと重複排除
PHP 配列を操作する場合、多くの場合、複数の配列を 1 つの配列にマージする必要があります。ただし、最終的な配列で値が重複しないようにすることが重要です。
2 つの配列のマージ
2 つの配列をマージするには、array_merge() 関数を使用できます。
$array1 = [ (object) [ 'ID' => 749, 'post_author' => 1, 'post_date' => '2012-11-20 06:26:07', 'post_date_gmt' => '2012-11-20 06:26:07' ] ]; $array2 = [ (object) [ 'ID' => 749, 'post_author' => 1, 'post_date' => '2012-11-20 06:26:07', 'post_date_gmt' => '2012-11-20 06:26:07' ] ]; $mergedArray = array_merge($array1, $array2);
$mergedArray には、$array1 と $array2 の両方の要素が含まれます。ただし、$array2 の重複オブジェクトも含まれるため、望ましくない可能性があります。
重複の削除
重複を削除するには、array_unique() を使用できます。関数。この関数は引数として配列を受け取り、重複した値が削除された新しい配列を返します。 array_merge() と array_unique() を組み合わせて、配列のマージと重複の削除の両方を行うことができます。
$mergedAndUniquedArray = array_unique(array_merge($array1, $array2), SORT_REGULAR);
SORT_REGULAR フラグにより、重複が削除される前に配列が要素の値によって並べ替えられるようになります。これは、元の配列をマージするときに元の配列の順序を維持したい場合に重要です。
array_map() と spl_object_hash() を組み合わせて使用して、配列から重複オブジェクトを削除することもできます。
$removeDuplicatesUsingObjects = function ($object) { return spl_object_hash($object); }; $mergedAndUniquedArray = array_map($removeDuplicatesUsingObjects, array_merge($array1, $array2)); $mergedAndUniquedArray = array_unique($mergedAndUniquedArray);
このメソッドは、spl_object_hash() 関数を使用して各オブジェクトの一意の識別子を生成し、これらの識別子に基づいて重複を削除します。
以上が重複した値を削除しながら複数の PHP 配列をマージするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。