ホームページ >バックエンド開発 >PHPチュートリアル >配列関数を使用してフラット配列内の列値を含む配列行を検索する方法

配列関数を使用してフラット配列内の列値を含む配列行を検索する方法

DDD
DDDオリジナル
2024-10-23 17:59:021081ブラウズ

How to Find Array Rows with Column Values in a Flat Array Using Array Functions?

フラット配列内の列値を持つ配列行の検索

このシナリオでは、元の配列 $arr1 という 2 つの配列が与えられます。 、複数の列と、一意の ID 値のリストを含む 2 番目の配列 $arr2 を持ちます。目的は、$arr2 内で見つかった ID 値を含む行のみを選択して $arr1 を改良することです。

この問題に対する非常に効率的な解決策は、array_uintersect() 関数を利用することです。この関数はカスタム コールバックを使用して、両方の入力配列の要素を比較します。このカスタム コールバックでは、「id」列の値にアクセスします。その列が存在しない場合は、パラメーターの値に戻ります。

array_uintersect() は、評価中にソートの手法を利用して、実行時間を最適化します。列値と ID 値を比較することにより、$arr2 で見つかった ID を持つ $arr1 内の行を識別します。結果の配列は、この条件を満たす選択行のみで構成されます。

参考までに、このソリューションを実装するコードを以下に示します。

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

以上が配列関数を使用してフラット配列内の列値を含む配列行を検索する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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