무한 루프로 끝나는 ArrayIterator를 반복하는 이유는 무엇입니까?
-
13-12-2019 - |
문제
내 코드의 배열은 꽤 커서 페이스트빈에 붙여넣었습니다. http://pastebin.com/6tviT2Xj
무한루프가 발생하는 이유를 모르겠습니다.
이 스크립트의 논리는 다음과 같습니다.
$it = new ArrayIterator($options);
while($it->valid()) {
print $it->key();
print $it->current();
}
해결책
iterator를 이동하지 않기 때문에 ( ArrayIterator :: Next () ).
while ($it->valid()) {
...
$it->next();
}
. 다른 팁
$it->next();
를 사용해야합니다.
현재 요소를 반복하고 있으므로 다음을 수행해야 합니다. $it->next();
다음 요소를 가리키거나 이동하려면
주요 문제는 $it->next();
를 실행하면 print $it->current();
로 배열 정보를 출력 할 수 없으므로 Array
를 실행할 수 없으므로 print
를 실행할 수 없으므로 원하는 출력을 제공하지 않습니다.
다차원 배열을 처리하고 있기 때문에 RecursiveArrayIterator
및 RecursiveIteratorIterator
를 사용해야합니다
모든 값을 시도해보십시오 :
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($options));
foreach ( $it as $key => $val ) {
echo $key . ":" . $val . "\n";
}
.
전체 데모를 참조하십시오 : http://codepad.viper-7.com/uqf18q / P>
제휴하지 않습니다 StackOverflow