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

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

Mary-Kate Olsen
リリース: 2024-11-01 14:29:02
オリジナル
848 人が閲覧しました

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

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