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

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

作成日: 更新日:

基本的な使い方

『nextメソッドは、イテレータを次の有効な要素に進める処理を実行するメソッドです』 このメソッドは、内部に保持しているイテレータのポインタを次の位置に移動させます。RecursiveFilterIteratorクラスにおけるnextメソッドの重要な役割は、単にポインタを次に進めるだけでなく、その移動先の要素がフィルター条件を満たしているかを確認する点にあります。具体的には、acceptメソッドを呼び出し、その戻り値がtrueになる要素が見つかるまで、内部で繰り返しポインタを進めます。もし次の要素がフィルター条件を満たさない場合(acceptfalseを返す場合)、条件を満たす要素が見つかるか、イテレータの終端に達するまで、自動的に次の要素へと移動し続けます。この動作により、foreachループなどでこのイテレータを処理する際に、開発者はフィルター条件を満たす要素だけを意識すればよくなり、条件に合わない要素をスキップするロジックを自ら記述する必要がなくなります。このメソッドは主にPHPのイテレーション機構によって内部的に呼び出されるため、通常はユーザーが直接呼び出すことはありません。戻り値はなく、内部の状態を更新するだけです。

構文(syntax)

1<?php
2class MyFilter extends RecursiveFilterIterator
3{
4    public function accept(): bool
5    {
6        // この例では全ての要素を有効とします
7        return true;
8    }
9}
10
11$data = [
12    'Apple',
13    'Orange',
14    ['Cherry', 'Melon'],
15    'Banana'
16];
17
18$arrayIterator = new RecursiveArrayIterator($data);
19$filterIterator = new MyFilter($arrayIterator);
20
21// イテレータを先頭に戻します
22$filterIterator->rewind();
23
24// イテレータが有効な間、ループ処理を行います
25while ($filterIterator->valid()) {
26    
27    // 現在の要素を取得して表示します
28    if ($filterIterator->hasChildren()) {
29        echo "[Sub-Array]" . PHP_EOL;
30    } else {
31        echo $filterIterator->current() . PHP_EOL;
32    }
33
34    // イテレータを次の要素に進めます
35    $filterIterator->next();
36}

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

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