【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

現在のイテレータのキーを返します。