【PHP8.x】keyメソッドの使い方
keyメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
keyメソッドは、FilterIteratorが現在指し示している要素のキーを取得するために実行するメソッドです。FilterIteratorクラスは、既存のイテレータに対してフィルタを適用し、条件に一致する要素のみを反復処理の対象とします。このフィルタリングされた結果をforeachループなどで処理する際、各要素の値だけでなく、それに対応するキーも必要になる場合があります。このメソッドは、そのような状況で現在の有効な要素のキーを返します。内部的には、FilterIteratorが保持している元のイテレータのkey()メソッドを呼び出し、その結果を返却する仕組みです。したがって、返されるキーのデータ型は、元のイテレータが持つキーの型(例えば、配列のインデックスであれば整数、連想配列のキーであれば文字列)に依存します。このメソッドは、current()メソッドで値を取得する際に、その値と対になるキーを正確に把握するために不可欠であり、フィルタリング後のデータセットをキーと値のペアとして正しく扱うために重要な役割を果たします。
構文(syntax)
1<?php 2 3// 奇数のみを許可するカスタムイテレータクラス 4class OddFilter extends FilterIterator 5{ 6 public function accept(): bool 7 { 8 // 現在の要素の値が奇数なら true を返す 9 return parent::current() % 2 !== 0; 10 } 11} 12 13// 元になるデータを持つArrayIteratorを作成 14$arrayIterator = new ArrayIterator(['zero' => 0, 'one' => 1, 'two' => 2, 'three' => 3, 'four' => 4]); 15 16// カスタムフィルタを適用 17$iterator = new OddFilter($arrayIterator); 18 19// フィルタリングされた要素をループ処理 20foreach ($iterator as $value) { 21 // key() メソッドを使って、フィルタリング後の現在の要素のキーを取得します。 22 // このループ内では、foreach構文の $key と同じ値が返されます。 23 $currentKey = $iterator->key(); 24 echo "キー: {$currentKey}, 値: {$value}" . PHP_EOL; 25} 26 27?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
mixed
現在のイテレータのキーを返します。