プロパティ値に基づいて配列内のオブジェクトを比較するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-10-23 14:50:43
オリジナル
713 人が閲覧しました

How Can You Compare Objects in Arrays Based on Property Values?

プロパティ値に基づいて配列内のオブジェクトを比較する

オブジェクトの 2 つの配列間の違いを判断するのは難しい場合があります。標準配列には array_diff や array_udiff などの関数が存在しますが、オブジェクトにはカスタマイズされたアプローチが必要です。

特定のプロパティに基づいてオブジェクトを比較するには、次の手順に従います。

  1. 比較関数: 2 つのオブジェクトをパラメータとして受け取り、それらの目的のプロパティ値の差を返す関数を作成します。
  2. 比較関数で array_udiff を使用します: オブジェクトの配列を渡し、 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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!