【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

このメソッドは、イテレータを最初の要素にリセットします。戻り値はありません。

【PHP8.x】rewindメソッドの使い方 | いっしー@Webエンジニア