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

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

作成日: 更新日:

基本的な使い方

validメソッドは、現在のイテレータの位置が有効であるかどうかを確認するメソッドです。このメソッドは、PHPの標準インターフェースであるIteratorの一部として定義されており、イテレータが指す位置にアクセス可能な要素が存在するかを真偽値で判定します。RecursiveIteratorIteratorクラスにおいて、このメソッドは再帰的なデータ構造全体を対象として有効性をチェックします。具体的には、現在の階層の子イテレータが終端に達しても、まだ親の階層に処理すべき要素が残っている場合はtrueを返します。つまり、ネストされたすべての要素を走査し終えるまで、このメソッドはtrueを返し続けます。そして、走査すべき要素が完全になくなった時点で初めてfalseを返します。この戻り値は、foreachループが処理を継続するか、それともループを終了するかを判断するための内部的な条件として利用されます。手動でイテレーションを制御するwhileループなどでも、ループの継続条件としてこのメソッドを直接呼び出すことができます。

構文(syntax)

1<?php
2
3// 多次元配列を準備します
4$array = [
5    'first' => 'a',
6    'second' => 'b',
7    'third' => [
8        'c',
9        'd',
10    ],
11];
12
13// RecursiveIteratorIteratorのインスタンスを生成します
14$iterator = new RecursiveIteratorIterator(
15    new RecursiveArrayIterator($array)
16);
17
18// イテレータを先頭に戻します
19$iterator->rewind();
20
21// valid()メソッドは、現在のイテレータの位置が有効な場合にtrueを返します。
22// これを利用して、whileループで全ての要素を反復処理します。
23while ($iterator->valid()) {
24    // 現在のキーと値を出力します
25    echo $iterator->key() . ' => ' . $iterator->current() . PHP_EOL;
26
27    // 次の要素へ移動します
28    $iterator->next();
29}
30
31?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

bool

現在のイテレータが有効な要素を指しているかどうかを示します。有効な場合は true、そうでない場合は false を返します。

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