다차원 배열 순회 자세히 알아보기: 첫 번째 일치 키 찾기
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 "did not find";
}
이 함수는 연관 배열을 재귀적으로 탐색하여 입력된 바늘과 일치하는 키를 찾아 해당 값을 반환하는 것을 목표로 합니다. 그러나 재귀는 여전히 불완전하여 질문에 답할 수 없는 상태로 남아 있습니다.
간소한 솔루션을 위해 최신 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!