다차원 PHP 배열에서 첫 번째로 일치하는 키를 효율적으로 찾는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-10-31 05:49:01
원래의
850명이 탐색했습니다.

How to Efficiently Find the First Matching Key in a Multidimensional PHP Array?

다차원 배열 순회 자세히 알아보기: 첫 번째 일치 키 찾기

PHP 프로그래밍 영역에서 다차원 배열 순회는 미로 같은 작업이 될 수 있습니다. . 첫 번째 일치하는 키와 관련된 값을 검색하려는 목표에 직면했을 때 개발자는 재귀적 접근 방식을 우연히 발견할 수 있습니다. 아래에 설명된 이러한 방법 중 하나는 재귀 구현에 잠재적인 함정을 제시합니다.

<br>private function find($needle, $haystack) {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">foreach ($haystack as $name => $file) {
    if ($needle == $name) {
        return $file;
    } else if(is_array($file)) { //is folder
        return $this->find($needle, $file); //file is the new haystack
    }               
}

return &quot;did not find&quot;;
로그인 후 복사

}

이 함수는 연관 배열을 재귀적으로 탐색하여 입력된 바늘과 일치하는 키를 찾아 해당 값을 반환하는 것을 목표로 합니다. 그러나 재귀는 여전히 불완전하여 질문에 답할 수 없는 상태로 남아 있습니다.

간소한 솔루션을 위해 최신 PHP 수용

끊임없이 진화하는 PHP 환경에서 최신 버전은 더 많은 기능을 제공합니다. 배열 순회에 대한 효율적이고 우아한 접근 방식입니다. PHP 5.6 이상에 맞게 조정된 다음 코드 조각을 고려하세요.

<br>function recursiveFind(array $haystack, $needle)<br>{</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$iterator  = new RecursiveArrayIterator($haystack);
$recursive = new RecursiveIteratorIterator(
    $iterator,
    RecursiveIteratorIterator::SELF_FIRST
);
foreach ($recursive as $key => $value) {
    if ($key === $needle) {
        return $value;
    }
}
로그인 후 복사

}

이 현대화된 코드는 생성기의 기능을 사용하여 재귀 순회 프로세스를 단순화합니다. 모든 배열 요소를 원활하게 반복하여 해당 값을 즉시 반환하기 전에 바늘을 필터링합니다.

제너레이터로 기능 확장

PHP 5.6의 출현으로 생성기가 도입되었습니다. 개발자는 처음 발견된 것뿐만 아니라 재귀 검색을 통해 여러 일치 항목을 생성합니다. 다음 스니펫은 이 향상된 기능을 보여줍니다.

<br>function recursiveFind(array $haystack, $needle)<br>{</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$iterator  = new RecursiveArrayIterator($haystack);
$recursive = new RecursiveIteratorIterator(
    $iterator,
    RecursiveIteratorIterator::SELF_FIRST
);
foreach ($recursive as $key => $value) {
    if ($key === $needle) {
        yield $value;
    }
}
로그인 후 복사

}

// 사용법
foreach (recursiveFind($haystack, $needle) as $value) {

// Use `$value` here
로그인 후 복사

}

이제 다음을 수행할 수 있습니다. 첫 번째 일치로 제한되는 대신 일치하는 모든 키-값 쌍을 반복합니다. 이를 통해 함수의 다양성이 확장되어 다차원 배열에서 보다 포괄적인 데이터 검색이 가능해졌습니다.

위 내용은 다차원 PHP 배열에서 첫 번째로 일치하는 키를 효율적으로 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
이전 기사:\"vendor/autoload.php\"를 찾을 수 없는 이유: Composer 자동 로드 오류 해결 가이드 다음 기사:PHP에서 문자열이 특정 문자열로 시작하는지 확인하는 방법은 무엇입니까?
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
최신 이슈
관련 주제
더>
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!