ホームページ >バックエンド開発 >PHPチュートリアル >プロパティ列に基づいてオブジェクト配列の配列の違いを見つける方法

プロパティ列に基づいてオブジェクト配列の配列の違いを見つける方法

DDD
DDDオリジナル
2024-10-23 14:40:57507ブラウズ

How to Find Array Difference for Object Arrays Based on a Property Column?

プロパティ列に基づいてオブジェクト配列の配列の違いを取得する

PHP プログラミングの領域では、array_diff 関数と array_udiff 関数は 2 つの配列間の違いを判断する手段を提供します。ただし、オブジェクトの配列を扱う場合は、カスタマイズされたアプローチが必要です。

次に示すようなオブジェクトの配列

<code class="php">array(4) {
    [0]=>
        object(stdClass)#32 (9) {
            ["id"]=>
            string(3) "205"
            ["day_id"]=>
            string(2) "12"
        }
}</code>

は、特に必要に応じて、独特の課題を引き起こします。例の「id」など、特定の列の値に基づいて違いを判断します。

これに対処するには、array_udiff 関数が役に立ちます。 3 番目のパラメータは、オブジェクトの比較を担当するユーザー定義関数です。適切な比較関数を作成することで、array_udiff に目的の操作を実行するように指示できます。

これを実現する方法の例を次に示します。

<code class="php">function compare_objects($obj_a, $obj_b) {
  return $obj_a->id - $obj_b->id;
}

$diff = array_udiff($first_array, $second_array, 'compare_objects');</code>

PHP 5.3 では、匿名関数を使用できます。別個の関数を宣言する代わりに:

<code class="php">$diff = array_udiff($first_array, $second_array,
  function ($obj_a, $obj_b) {
    return $obj_a->id - $obj_b->id;
  }
);</code>

これらのテクニックを使用すると、任意の列またはプロパティの値を比較することで、オブジェクトの配列間の差異を効果的に判断できるようになります。

以上がプロパティ列に基づいてオブジェクト配列の配列の違いを見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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