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

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

作成日: 更新日:

基本的な使い方

『nextメソッドは、RecursiveCallbackFilterIteratorの内部ポインタを、フィルタリング条件を満たす次の要素へ移動させるために実行するメソッドです。RecursiveCallbackFilterIteratorは、コンストラクタで指定されたコールバック関数を用いて、再帰的なデータ構造の要素をフィルタリングする際に利用されます。このnextメソッドが呼び出されると、イテレータは内部的にポインタを次の要素へ進めます。そして、その移動先の要素がコールバック関数によって定義された条件を満たすかどうかを評価します。もし条件を満たさない場合は、条件を満たす有効な要素が見つかるか、イテレータの終端に達するまで、このポインタの移動と評価の処理が自動的に繰り返されます。この一連の動作により、開発者はフィルタリング条件に合致しない要素を意識することなく、ループ処理などで常に有効な要素だけを順番に取得できます。通常、このメソッドはforeach文でイテレータを処理する際にPHPによって内部的に呼び出されるため、開発者が直接呼び出すことは稀です。

構文(syntax)

1<?php
2
3// 多次元配列を定義
4$data = [
5    'item1',          // この要素は条件に一致
6    'group1' => [     // この要素は条件に一致しない (子を持つため)
7        'sub-item1'
8    ],
9    'item2',          // この要素は条件に一致
10];
11
12// 配列から再帰的なイテレータを作成
13$arrayIterator = new RecursiveArrayIterator($data);
14
15// 子を持たない要素のみを許可するフィルタ用のコールバック関数
16$filter = function ($current, $key, $iterator) {
17    return !$iterator->hasChildren();
18};
19
20// コールバックを適用するフィルタイテレータのインスタンスを作成
21$iterator = new RecursiveCallbackFilterIterator($arrayIterator, $filter);
22
23// イテレータを手動で操作
24$iterator->rewind(); // イテレータを先頭の有効な要素('item1')にセット
25
26echo $iterator->current() . PHP_EOL; // 'item1' を出力
27
28// イテレータを次の有効な要素に進める
29// 'group1'はフィルタで除外され、'item2'に移動する
30$iterator->next();
31
32if ($iterator->valid()) {
33    echo $iterator->current() . PHP_EOL; // 'item2' を出力
34}
35
36?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

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