>백엔드 개발 >PHP 튜토리얼 >다차원 배열의 특정 키와 연관된 값을 어떻게 효율적으로 찾을 수 있습니까?

다차원 배열의 특정 키와 연관된 값을 어떻게 효율적으로 찾을 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-04 14:44:58820검색

How Can I Efficiently Find a Value Associated with a Specific Key in a Multidimensional Array?

다차원 배열에서 일치하는 키 값 찾기

복잡한 다차원 배열에서 특정 키를 검색하는 것은 어려운 작업일 수 있습니다. 제공된 것과 같은 사용자 정의 재귀 함수는 이 문제를 해결하려고 시도합니다. 하지만 재귀 구현에 문제가 발생할 수 있습니다.

원래 함수는 배열을 순회하면서 찾고 있는 키가 발견되면 해당 키와 관련된 값을 반환합니다. 그러나 값이 배열(폴더를 나타냄)인 경우 하위 배열(새 건초 더미)에서 자체적으로 반복적으로 호출됩니다. 이 재귀는 문제가 될 수 있습니다.

가능한 해결책은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.