PHP での多次元配列内のキーと値のペアの検索
概要:
検索多次元配列内のキーと値の一致に基づく特定のサブ配列は、特に配列の深さは不明です。この記事では、この検索操作を効率的に実行するための再帰的アプローチについて説明します。
関数定義:
function search($array, $key, $value) { // Initialize an empty results array $results = array(); // Check if the current element is an array if (is_array($array)) { // If the current element matches the key-value pair, add it to the results if (isset($array[$key]) && $array[$key] == $value) { $results[] = $array; } // Recursively search through each subarray foreach ($array as $subarray) { $results = array_merge($results, search($subarray, $key, $value)); } } // Return the accumulated results 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' の場合、関数は次を返します:
array( 0 => array('id' => 1, 'name' => "cat 1"), 1 => array('id' => 3, 'name' => "cat 1") );
パフォーマンスに関する考慮事項:
効率が最優先されるシナリオでは、別のアプローチが利用可能です:
function searchOptimized($array, $key, $value) { $results = array(); searchOptimized_r($array, $key, $value, $results); return $results; } function searchOptimized_r($array, $key, $value, &$results) { if (!is_array($array)) { return; } if (isset($array[$key]) && $array[$key] == $value) { $results[] = $array; } foreach ($array as $subarray) { searchOptimized_r($subarray, $key, $value, $results); } }
この最適化されたバージョンでは、検索結果は一時的な $results 配列に直接蓄積されるため、配列のマージが必要です。 searchOptimized_r の呼び出しで参照渡しを指定することにより、このバージョンは古い PHP バージョンとの互換性を維持しながら高いパフォーマンスを維持します。
以上がPHP の多次元配列でキーと値のペアを効率的に検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。