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