ホームページ >バックエンド開発 >PHPチュートリアル >多次元 PHP 配列でキーと値のペアを効率的に検索するにはどうすればよいですか?
多次元 PHP 配列内のキーと値のペアの再帰的検索
多次元配列内の特定のキーと値のペアを検索するのは面倒な場合があります。配列の深さが可変の場合、高速かつ効率的な解決策を見つけることが不可欠です。
再帰検索関数
次の PHP 関数は、再帰を使用して配列を再帰的に走査し、比較します。指定されたキーの値:
function search($array, $key, $value) { $results = array(); if (is_array($array)) { if (isset($array[$key]) && $array[$key] == $value) { $results[] = $array; } 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' を持つすべてのサブ配列を検索するには、次のようにします。 use:
print_r(search($arr, 'name', 'cat 1'));
Output:
Array ( [0] => Array ( [id] => 1 [name] => cat 1 ) [1] => Array ( [id] => 3 [name] => cat 1 ) )
効率に関する考慮事項
特に大規模な配列の場合、効率を向上させるための場合は、結果を参照によって渡す再帰関数の使用を検討してください。単一の一時 $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 サイトの他の関連記事を参照してください。