【PHP8.x】rewindメソッドの使い方
rewindメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
rewindメソッドは、イテレータを最初の要素に巻き戻す処理を実行するメソッドです。このメソッドはPHPのIteratorインターフェースで定義されており、foreachループなどでイテレーションが開始される際に自動的に呼び出されます。RecursiveCallbackFilterIteratorクラスは、再帰的なデータ構造に対して、指定したコールバック関数による条件を満たす要素だけを抽出(フィルタリング)する機能を提供します。このクラスのrewindメソッドが実行されると、まず内部で保持している元のイテレータを先頭の位置に戻します。その後、フィルタリング条件として指定されたコールバック関数がtrueを返す最初の要素が見つかるまで、イテレータを内部的に進めます。これにより、イテレーションを開始する際には、フィルタリング後の有効な結果セットの先頭にカーソルが正しく設定された状態が保証されます。もし条件に合致する要素が一つも存在しない場合、イテレータは最初から無効な状態となります。このメソッドに戻り値はありません。
構文(syntax)
1<?php 2 3// 再帰的な配列を扱うイテレータを作成します 4$arrayIterator = new RecursiveArrayIterator([ 5 'item1' => 'apple', 6 'item2' => 'banana', 7 'subItems' => [ 8 'item3' => 'orange', 9 ], 10]); 11 12// フィルタリングの条件を定義するコールバック関数です 13// この例では、すべての要素を許可します 14$callback = function ($current, $key, $iterator) { 15 return true; 16}; 17 18// コールバック関数を使ってフィルタリングを行うイテレータを作成します 19$filterIterator = new RecursiveCallbackFilterIterator($arrayIterator, $callback); 20 21// foreach ループでイテレータを処理します 22// ループの開始時に、内部的に rewind() が自動で呼び出されます 23foreach ($filterIterator as $item) { 24 // 最初の要素を処理した後にループを中断します 25 break; 26} 27 28// rewind() メソッドを明示的に呼び出し、イテレータを先頭の位置に戻します 29$filterIterator->rewind(); 30 31?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
void
このメソッドは、イテレータを最初の要素にリセットします。戻り値はありません。