일치하는 키 값을 찾기 위해 다차원 배열 검색
특정 키와 해당 값을 검색하기 위해 다차원 배열을 순회할 때 흔히 발생하는 문제는 다음과 같습니다. 재귀 문제. 다음 샘플 방법을 고려해 보세요.
<code class="php">private function find($needle, $haystack) { 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"; }</code>
이 방법은 연관 배열 내에서 키를 찾고 연관된 값을 반환하는 것을 목표로 합니다. 그러나 재귀 접근 방식에는 잠재적인 문제가 있습니다.
이 문제를 해결하려면 PHP의 새로운 기능을 사용하여 보다 현대적이고 효율적인 솔루션을 사용할 수 있습니다.
<code class="php">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; } } }</code>
이 방법은 재귀 및 반복자를 활용합니다. 배열을 효율적으로 탐색하고 일치하는 첫 번째 키를 찾으려면.
또는 첫 번째 일치 항목이 아닌 모든 일치 항목을 반복하려는 경우 PHP 5.6의 생성기를 사용할 수 있습니다.
<code class="php">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; } } } // Usage foreach (recursiveFind($haystack, $needle) as $value) { // Use `$value` here }</code>
이 접근 방식을 사용하면 배열에서 일치하는 모든 값을 우아하게 반복할 수 있습니다.
위 내용은 PHP에서 다차원 배열의 키 값을 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!