ホームページ >バックエンド開発 >PHPチュートリアル >array_uintersect() を使用して値を照合して配列行をフィルタリングする方法

array_uintersect() を使用して値を照合して配列行をフィルタリングする方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-23 16:06:02222ブラウズ

How to Filter Array Rows by Matching Values Using array_uintersect()?

フラット配列内の値と一致する配列行を維持します

背景:

複数の列を含む配列 $arr1 と、値のリストを含む別の配列 $arr2 です。目標は、$arr1 をフィルターし、id 列が $arr2 の値と一致する行のみを保持することです。

解決策:

array_uintersect() を使用する:

最も効率的なソリューションは、ユーザー定義のコールバックを使用して 2 つの配列の要素を比較する array_uintersect() 関数を利用します。この場合、コールバックは ID 値が一致するかどうかをチェックします。

var_export(
    array_uintersect(
        $arr1,
        $arr2,
        fn($a, $b) =>
            ($a['id'] ?? $a)
            <=>
            ($b['id'] ?? $b)
    )
);

説明:

  • array_uintersect() 関数は 2 つの配列とコールバックを受け取ります。
  • コールバック関数は両方の配列の要素ごとに呼び出され、要素が等しいとみなされる場合は 0、最初の要素が大きい場合は 1、2 番目の要素が大きい場合は -1 を返す必要があります。 .
  • 要素に id 列がない場合、その生の値が比較に使用されます。
  • 結果は、id 列が値と一致する $arr1 の行のみを含む配列になります。 in $arr2.

array_uintersect() の利点:

  • これはネイティブ PHP 関数であり、効率性と互換性を確保します。
  • 評価中にソートを実行し、パフォーマンスを最適化します。
  • in_array() の反復呼び出しと比較して、簡潔で読みやすいソリューションを提供します。

以上がarray_uintersect() を使用して値を照合して配列行をフィルタリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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