다차원 배열에서 일치하는 키 값 찾기
복잡한 다차원 배열에서 특정 키를 검색하는 것은 어려운 작업일 수 있습니다. 제공된 것과 같은 사용자 정의 재귀 함수는 이 문제를 해결하려고 시도합니다. 하지만 재귀 구현에 문제가 발생할 수 있습니다.
원래 함수는 배열을 순회하면서 찾고 있는 키가 발견되면 해당 키와 관련된 값을 반환합니다. 그러나 값이 배열(폴더를 나타냄)인 경우 하위 배열(새 건초 더미)에서 자체적으로 반복적으로 호출됩니다. 이 재귀는 문제가 될 수 있습니다.
가능한 해결책은 PHP의 RecursiveArrayIterator를 활용하는 것입니다. 버전 5.6 이상에서는 이 반복자를 활용하면 더욱 효율적이고 안정적인 접근 방식이 제공됩니다.
function recursiveFind(array $haystack, $needle) { $iterator = new RecursiveArrayIterator($haystack); $recursive = new RecursiveIteratorIterator( $iterator, RecursiveIteratorIterator::SELF_FIRST ); foreach ($recursive as $key => $value) { if ($key === $needle) { return $value; } } }
이 함수는 반복적으로 반복하여 배열 전체의 키와 값을 검사합니다. 일치하는 키를 발견하면 해당 값을 반환합니다.
또는 PHP 5.6 이상의 경우 생성기는 여러 일치하는 키 검색을 용이하게 할 수 있습니다.
function recursiveFind(array $haystack, $needle) { $iterator = new RecursiveArrayIterator($haystack); $recursive = new RecursiveIteratorIterator( $iterator, RecursiveIteratorIterator::SELF_FIRST ); foreach ($recursive as $key => $value) { if ($key === $needle) { yield $value; } } }
생성기를 사용하면 다음과 같은 작업을 수행할 수 있습니다. 첫 번째 값뿐만 아니라 일치하는 모든 값을 반복합니다. 이 기능은 복잡하고 깊게 중첩된 배열을 처리할 때 유용할 수 있습니다.
위 내용은 다차원 배열의 특정 키와 연관된 값을 어떻게 효율적으로 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!