列値の包含に基づく行サブセット
複数の列と 2 番目のフラット配列 $arr2 を含む配列 $arr1 を考えます。特定の ID 値が含まれています。目的は、$arr1 をフィルターして、列の値が $arr2.
の値のいずれかに一致する行のみを保持することです。フィルター関数または array_search を使用した以前の試みは成功しませんでした。実際的な解決策には、ネイティブ PHP 関数 array_uintersect() を使用することが含まれます。
この関数は、両方の入力配列内の id 列を評価する (または、存在しない場合はパラメーター値にフォールバックする) 匿名コールバック関数を利用します。比較では、値間の等しいかどうかがチェックされます。
コールバック内では、演算子 => を使用して入力配列変数 $a と $b をキャプチャし、三項演算子 ?: で null 以外の戻り値を割り当てます。 .
内部では、array_uintersect は評価プロセス中にソートを実行し、パフォーマンスを最適化し、反復的な in_array() よりも大幅に高速に実行します。 Calls.
以下のコードは解決策を示しています:
var_export(
array_uintersect(
$arr1,
$arr2,
fn($a, $b) =>
($a['id'] ?? $a)
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3