連想配列の列間の違いを見つける
連想データの行を含む 2 つの配列があり、次の条件に基づいて 2 番目の配列をフィルタリングしたいとします。最初の配列の特定の列の値。 array_diff() を使用すると、目的の列だけでなく行全体が比較されるため、これには十分ではありません。
これに対処するには、array_udiff() 関数を利用して、カスタム比較関数を定義できます。 。この関数は、目的の列 (この場合は 'ITEM' キー) の値のみを比較する必要があります。
これを実装する方法は次のとおりです:
function udiffCompare($a, $b) { return $a['ITEM'] - $b['ITEM']; } $arrdiff = array_udiff($arr2, $arr1, 'udiffCompare');
これは、カスタム比較関数 udiffCompare を定義します。これは、比較される 2 つの行の「ITEM」値を減算します。この減算の結果によって、行が等しいか、異なるか、またはどちらが大きいかが決まります。
array_udiff() の 3 番目の引数として udiffCompare を渡すことにより、基本的にこのカスタム比較を使用するように関数に指示することになります。 $arr2 のどの要素が $arr1 の要素と異なるかを判断する関数を、'ITEM' 列に基づいて決定します。
このコードの出力は、次の内容を含む配列になります。 $arr1 に存在しない $arr2 の要素のみを元の配列構造を保持します:
Array ( [3] => Array ( [ITEM] => 4 ) )
このデモでは、ある配列を、別の配列の特定の列の値に基づいて効果的にフィルター処理しながら、元の配列構造。
以上が特定の列に基づいて連想配列を効率的に比較およびフィルタリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。