重複した値を削除しながら複数の PHP 配列をマージするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-13 00:16:01
オリジナル
635 人が閲覧しました

How can I merge multiple PHP arrays while removing duplicate values?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート