【PHP8.x】nextメソッドの使い方

nextメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

nextメソッドは、FilterIteratorが持つ内部イテレータのポインタを、フィルタリング条件を満たす次の要素まで進める処理を実行するメソッドです。このメソッドが呼び出されると、まず内部イテレータのポインタが一つ次の位置に移動します。その後、移動先の要素が、このクラスを継承して実装されたacceptメソッドの条件を満たすかどうかを判定します。もし条件を満たさない場合、条件を満たす要素が見つかるか、あるいはイテレータの終端に達するまで、ポインタをさらに次の要素へ進める処理を内部で繰り返します。この仕組みにより、開発者はフィルタリング条件に合致する要素だけを順番に効率よく取得できます。通常、FilterIteratorforeach文などで使用する場合、このnextメソッドはループの各反復処理の裏側で自動的に呼び出されるため、開発者が直接呼び出すことは稀です。このメソッドは、Iteratorインターフェースの要件を満たすために実装されており、何も値を返しません。

構文(syntax)

1<?php
2// 数値が偶数であるかどうかを判定するカスタムフィルタ
3class EvenFilter extends FilterIterator
4{
5    // このメソッドが true を返す要素だけが有効になります
6    public function accept(): bool
7    {
8        return $this->current() % 2 === 0;
9    }
10}
11
12$numbers = new ArrayIterator([1, 2, 3, 4, 5, 6, 7, 8]);
13$iterator = new EvenFilter($numbers);
14
15// イテレータを手動で操作します
16$iterator->rewind(); // 最初の要素へ移動
17
18// valid() が true の間、ループを続けます
19while ($iterator->valid()) {
20    // 現在のキーと値を取得
21    echo $iterator->key() . " => " . $iterator->current() . PHP_EOL;
22
23    // accept() が true を返す次の要素へイテレータを進めます
24    $iterator->next();
25}

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません