다차원 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!