多次元 PHP 配列のキーと値のペアに基づいてサブ配列を検索する
多次元配列を走査する場合、ベースの特定のサブ配列を見つけるのが難しい場合があります。キーと値のペアで。ただし、配列の深さに関係なく、これを再帰的に行う効率的な方法があります。
関数の実装:
指定された条件を満たす部分配列を検索する関数を作成しましょう。 :
function search($array, $key, $value) { $results = array(); if (is_array($array)) { // Check if the current subarray matches if (isset($array[$key]) && $array[$key] == $value) { $results[] = $array; } // Recursively search inner subarrays foreach ($array as $subarray) { $results = array_merge($results, search($subarray, $key, $value)); } } return $results; }
の使用法例:
次のサンプル配列があるとします:
$arr = array(0 => array(id => 1, name => "cat 1"), 1 => array(id => 2, name => "cat 2"), 2 => array(id => 3, name => "cat 1"));
キー 'name' と値 'cat を持つサブ配列を検索できます。 1':
$found = search($arr, 'name', 'cat 1'); print_r($found);
出力:
Array ( [0] => Array ( [id] => 1 [name] => cat 1 ) [1] => Array ( [id] => 3 [name] => cat 1 ) )
効率の考慮事項:
特に次の場合に効率を向上させるため大きな配列を扱う場合、配列のマージを回避することで関数を最適化できます。代わりに、再帰呼び出しの結果を一時配列に保存できます。
function search_optimized($array, $key, $value) { $results = []; search_r($array, $key, $value, $results); return $results; } function search_r($array, $key, $value, & $results) { if (!is_array($array)) { return; } if (isset($array[$key]) && $array[$key] == $value) { $results[] = $array; } foreach ($array as $subarray) { search_r($subarray, $key, $value, $results); } }
結果の配列を参照渡しすることで、関数は最終結果を効率的に構築できます。
以上が多次元 PHP 配列のキーと値のペアに基づいてサブ配列を効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。