このシナリオでは、製品のコレクションを表す多次元配列があります。各製品は、名前、スラッグ、価格などのプロパティによって定義されます。目標は、スラッグ プロパティを使用して配列で特定の製品を検索し、配列内の対応するキーを返す方法を見つけることです。
これを実現する 1 つの方法は、array_search 関数と array_column 関数を利用することです。このアプローチをカプセル化するカスタム関数を次に示します。
function array_search_multidim(array $array, string $column, string $key) { return array_search($key, array_column($array, $column)); }
この関数を使用するには、次のように呼び出します。
$product_key = array_search_multidim($products, 'slug', 'breville-one-touch-tea-maker-BTM800XL');
これは、$products 配列で製品を検索します。 「breville-one-touch-tea-maker-BTM800XL」に等しい slug プロパティを取得し、対応するキーを返します。この例では、値 1 が返されます。
もう 1 つの可能な解決策は、array_search 関数に基づくものです。このアプローチでは、PHP 5.5.0 以降を使用する必要があります。
$key = array_search('breville-one-touch-tea-maker-BTM800XL', array_column($products, 'slug'));
このコードは、前の例と同じ結果を達成します。
array_walk_recursive を使用する 3 番目の方法もあります。配列のすべての要素を再帰的に調べて、スラッグの値を指定された値と比較します。 value:
function array_walk_recursive_search($input, $needle, &$result = null) { if (is_array($input)) { foreach ($input as $key => $value) { array_walk_recursive_search($value, $needle, $result); } } else { if ($input === $needle) { $result = $key; } } }
この関数は次のように呼び出すことができます:
array_walk_recursive($products, 'breville-one-touch-tea-maker-BTM800XL', $product_key);
array_walk_recursive メソッドはより一般的で、あらゆるタイプの配列構造を処理できることに注意することが重要です。一般に、他の方法よりも遅いです。
全体的に、使用する最適な方法は、特定のニーズと制約によって異なります。あなたのアプリケーション。ただし、最も効率的な 2 つの方法は、array_search 関数と array_column 関数を利用する方法です。
以上がPHP 多次元配列内のキーをその値によって効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。