プロパティ値に基づいて配列内のオブジェクトを比較する
オブジェクトの 2 つの配列間の違いを判断するのは難しい場合があります。標準配列には array_diff や array_udiff などの関数が存在しますが、オブジェクトにはカスタマイズされたアプローチが必要です。
特定のプロパティに基づいてオブジェクトを比較するには、次の手順に従います。
たとえば、次のオブジェクトの配列について考えてみましょう。
array(4) { [0]=> object(stdClass)#32 (9) { ["id"]=> string(3) "205" ["day_id"]=> string(2) "12" } }
それらの違いを見つけるには、次のようなものがあります。 id プロパティで、次のような比較関数を定義します:
function compare_objects($obj_a, $obj_b) { return $obj_a->id - $obj_b->id; }
次に、array_udiff を使用して配列を比較します:
$diff = array_udiff($first_array, $second_array, 'compare_objects');
あるいは、PHP >= 5.3 を使用している場合は、匿名関数を使用できます:
$diff = array_udiff($first_array, $second_array, function ($obj_a, $obj_b) { return $obj_a->id - $obj_b->id; } );
このアプローチにより、必要なプロパティ値に基づいて配列内のオブジェクトを効率的に比較できます。
以上がプロパティ値に基づいて配列内のオブジェクトを比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。