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; }
예:
다음 다차원을 고려하세요. array:
$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 중국어 웹사이트의 기타 관련 기사를 참조하세요!