0
誰でも私に説明することができます、なぜkey()
は正しくループしませんか?for
ArrayIteratorのkey()はforループでは機能しませんか?
例
それは無限ループを返しますが、私は上for
ループの第二の表現を変更した場合: $iterator->key() < 2
それは最後の要素を表示しません。なぜ誰かが説明できますか?私は、2つの要素を表示するX上の配列のポインタを変更し、ディスプレイの3つの要素、Y上の配列にポインタを変更し、2つの要素を表示する必要が
...など
問題は、キー2の最後の要素の後に、next()を使って次の要素に移動し、その後に要素がないことです。したがって、 'key()'で存在しない要素からキーを取得すると、NULLが返されます。 'key <3'の数値文脈では、NULLを意味するキーは整数に変換されます。したがってNULLは0になり、0は3より小さくなります。これは無限ループを引き起こします。 forループの条件部分に '$ iterator-> valid()'を使用して、常に有効な要素があることを確認してください。 – Rizier123
@ Rizier123が言ったことにピギーバックする。このようなものです。if($ iterator-> valid()) { echo "{$ iterator-> key()} => {$ iterator-> current()}"、PHP_EOL; } else { die(0); //または何でも } ' – Andrew