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

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

作成日: 更新日:

基本的な使い方

『validメソッドは、イテレータの現在の位置が有効な要素を指しているかどうかをチェックするメソッドです』 このメソッドは、CallbackFilterIteratorが内部で保持しているイテレータを走査する際に、フィルタリング条件を満たす次の有効な要素が存在するかどうかを確認するために使用されます。validが呼び出されると、まず内部イテレータの現在の要素が有効かどうかが確認されます。もし無効であれば、つまりイテレータの終端に達していれば、validfalseを返します。内部イテレータの要素が有効な場合、次にコンストラクタで指定されたコールバック関数がその要素を引数として実行されます。コールバック関数がtrueを返した場合、その要素はフィルタリング条件を満たしていると見なされ、validメソッドはtrueを返して処理を終了します。もしコールバック関数がfalseを返した場合、CallbackFilterIteratorは内部イテレータを次の要素へ進め、再び同じチェックを繰り返します。この処理は、条件を満たす要素が見つかるか、イテレータの終端に達するまで続けられます。この仕組みにより、foreachなどのループ構文でCallbackFilterIteratorを扱う際に、フィルタリング条件に合致する要素だけを効率的に取り出すことが可能になります。

構文(syntax)

1<?php
2
3$dataSource = new ArrayIterator(['apple', 'banana', 'orange', 'apricot']);
4
5$filter = function (string $current): bool {
6    // 'a'で始まる要素だけを有効とする
7    return str_starts_with($current, 'a');
8};
9
10$iterator = new CallbackFilterIterator($dataSource, $filter);
11
12// イテレータを先頭に戻す
13$iterator->rewind();
14
15// valid() が true を返す間、ループを続ける
16while ($iterator->valid()) {
17    echo $iterator->current() . PHP_EOL;
18    $iterator->next();
19}

引数(parameters)

引数なし

引数はありません

戻り値(return)

bool

このメソッドは、現在のイテレータ位置が有効な要素を指しているかどうかを示す真偽値(bool)を返します。有効な場合は true、無効な場合は false が返されます。

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