ホームページ >バックエンド開発 >PHPチュートリアル >オブジェクトで「array_unique」を使用して重複を削除できますか?

オブジェクトで「array_unique」を使用して重複を削除できますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-01 14:29:02854ブラウズ

Can You Use `array_unique` with Objects to Remove Duplicates?

オブジェクトでの array_unique の使用

配列はプログラミングにおける基本的なデータ構造であり、配列に対して実行する必要がある操作がよくあります。一般的な操作の 1 つは、重複した要素を削除することです。プリミティブ データ型の配列の場合は、array_unique 関数を使用できます。ただし、オブジェクトを扱う場合、状況はもう少し複雑になります。

問題

マージして重複を排除する必要があるロール オブジェクトを含む配列がいくつかあると想像してください。オブジェクト用に特別に設計された array_unique に似たメソッドを使用してこれを実現する方法はありますか?

解決策

はい、次の方法でオブジェクトに対して array_unique を使用することができます。 SORT_REGULAR フラグを指定します。これにより、オブジェクトの ID ではなく、プロパティに基づいてオブジェクトが比較されます。

<code class="php">class MyClass {
    public $prop;
}

$foo = new MyClass();
$foo->prop = 'test1';

$bar = $foo;

$bam = new MyClass();
$bam->prop = 'test2';

$test = array($foo, $bar, $bam);

print_r(array_unique($test, SORT_REGULAR));</code>

出力:

Array (
    [0] => MyClass Object
        (
            [prop] => test1
        )

    [2] => MyClass Object
        (
            [prop] => test2
        )
)

重要な注意事項:

オブジェクトで array_unique を使用する場合、厳密な比較 ("===") ではなく、"== 比較が使用されることに注意することが重要です。これは、同じプロパティを持つがオブジェクト ID が異なる 2 つのオブジェクトは重複とみなされないことを意味します。したがって、厳密な比較が必要な場合は、別のアプローチが必要になる場合があります。

以上がオブジェクトで「array_unique」を使用して重複を削除できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。