動作原理
1. 最初の反復の前に、 iterator::rewind() メソッドを実行します。
1 回だけ実行され、イテレータの最初の要素が返されますが、メソッドには戻り値がありません
2. 最初の要素が有効かどうかを確認します。
認証方法はカスタマイズできます。戻り値が true の場合は実行が続行され、戻り値が false の場合は反復が終了します。
3. foreach はイテレータの呼び出しを続けます。
指定された機能のキーと値を返します。
4. foreachのメソッド本体
var_dump($key,$value)
5. 各反復の後、Iterator を呼び出して次の要素を決定し、2 番目のステップを繰り返します。
例
string(18) "myIterator::rewind" //反復の開始前に rewind メソッドを呼び出し、反復子の最初の要素に戻り、$this->position = 1; を実行します。 string(17) "myIterator::valid" //現在の要素 $this->array[1] が有効かどうかを確認し、有効であれば実行を続行します。 string(19) "myIterator::current" // 現在の要素に対応する値を返します $this->array[0]='firstelement' string(15) "myIterator::key" // 現在の要素のキーを返します $this->position = 1 int(1) //var_dump($key) string(12) "2番目の要素" //var_dump($value) string(16) "myIterator::next" //次の要素に進みます++$this->position=2 string(17) "myIterator::valid" //現在の要素 $this->array[2] が有効かどうかを確認し、有効であれば実行を続行します。 string(19) "myIterator::current" //前の手順を繰り返します string(15) "myIterator::key" //前の手順を繰り返します int(2) //前の手順を繰り返します string(11) "lastelement" //前の手順を繰り返します string(16) "myIterator::next" //次の要素に進みます++$this->position=3 string(17) "myIterator::valid" //現在の要素 $this->array[3] が有効かどうかを確認し、無効な場合はトラバーサルを終了します
上記は PHP イテレータの動作原理の分析です。皆様のお役に立てれば幸いです。