【PHP8.x】currentメソッドの使い方
currentメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
『currentメソッドは、フィルタリング後のイテレータで現在位置にある要素を取得するために実行するメソッドです』
このメソッドは、PHPのIteratorインターフェースで定義されている基本的なメソッドの一つであり、FilterIteratorクラスで利用されます。FilterIteratorは、配列や他のイテレータオブジェクトを元にして、特定の条件を満たす要素だけを抽出するためのものです。currentメソッドは、その抽出条件(acceptメソッドで定義)を通過した要素のうち、イテレータが現在指し示している要素の値を返します。foreachループでFilterIteratorのインスタンスを反復処理する場合、ループの各サイクルで変数に代入される値は、このcurrentメソッドが返す値そのものです。返される値のデータ型は、元のイテレータに含まれる要素の型に依存するため、文字列、数値、オブジェクトなど様々です。もしイテレータが有効な要素を指していない場合、例えば反復処理が終了した後などに呼び出されると、nullなどを返すことがあります。
構文(syntax)
1<?php 2// 偶数のみを許可するカスタムフィルタクラス 3class EvenNumberFilter extends FilterIterator 4{ 5 // このメソッドが true を返した要素のみがイテレーションの対象となる 6 public function accept(): bool 7 { 8 // 親イテレータの現在の値を取得し、偶数かどうかを判定 9 $currentValue = parent::current(); 10 return $currentValue % 2 === 0; 11 } 12} 13 14// フィルタリング対象のデータを持つイテレータ 15$arrayIterator = new ArrayIterator([1, 2, 3, 4, 5, 6, 7, 8]); 16 17// フィルタを適用したイテレータを作成 18$filterIterator = new EvenNumberFilter($arrayIterator); 19 20// フィルタされたイテレータをループで処理する 21// foreachループは、内部で valid(), current(), next() を自動的に呼び出す 22foreach ($filterIterator as $value) { 23 // この $value には、FilterIterator::current() が返した値が格納される 24 echo $value . PHP_EOL; 25} 26?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
mixed
現在のイテレータが指している要素を返します。要素が存在しない場合は null を返します。