다차원 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"));
그리고 다음을 검색합니다. key=name 및 value="cat 1"인 경우 함수는 다음을 반환합니다.
Array ( [0] => Array ( [id] => 1 [name] => cat 1 ) [1] => Array ( [id] => 3 [name] => cat 1 ) )
효율성을 높이기 위해 대체 구현에서는 별도의 배열을 만드는 대신 재귀 호출의 결과를 단일 $results 배열로 병합합니다.
function search($array, $key, $value) { $results = array(); 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); } }
매개변수 목록의 앰퍼샌드 &는 참조별 전달을 나타내므로 모든 재귀 호출이 동일한 $results를 수정하도록 합니다.
이 강력하고 다재다능한 솔루션을 사용하면 개발자는 깊이나 복잡성에 관계없이 다차원 PHP 배열에서 키-값 쌍을 원활하게 검색할 수 있습니다.
위 내용은 다차원 PHP 배열에서 키-값 쌍을 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!