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

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

作成日: 更新日:

基本的な使い方

keyメソッドは、イテレータが指している現在の要素のキーを返す処理を実行するメソッドです。このメソッドは、RegexIteratorが内部で保持している元のイテレータにおける、現在の要素のキーを返します。RegexIteratorは、配列や他のイテレータオブジェクトを正規表現パターンでフィルタリングするために使用されますが、keyメソッドを利用することで、正規表現にマッチした要素が、元のデータ構造においてどのキーに対応していたかを正確に知ることができます。例えば、foreachループでRegexIteratorのインスタンスを処理している際にこのメソッドを呼び出すと、その反復処理で扱っている要素のキーが取得できます。元のデータが連想配列であれば文字列のキーが返され、数値添字配列であればそのインデックス番号が返されます。currentメソッドがマッチした値そのものを返すのに対し、keyメソッドはキーを返すという明確な役割分担がされており、この二つを組み合わせることで、フィルタリング後の要素のキーと値のペアを確実に取得し、後続の処理に活用することが可能になります。

構文(syntax)

1<?php
2
3$items = [
4    'apple' => 'A red fruit',
5    'banana' => 'A yellow fruit',
6    'avocado' => 'A green fruit',
7    'apricot' => 'An orange fruit'
8];
9
10$arrayIterator = new ArrayIterator($items);
11
12// キーが 'a' で始まる要素を検索し、元のキーを保持するイテレータを作成します。
13// 第4引数に RegexIterator::USE_KEY を指定すると、key() は元の配列のキーを返します。
14$regexIterator = new RegexIterator($arrayIterator, '/^a/', RegexIterator::MATCH, RegexIterator::USE_KEY);
15
16foreach ($regexIterator as $value) {
17    // イテレータの現在のキーを取得します。
18    $key = $regexIterator->key();
19
20    // 'apple', 'avocado', 'apricot' が順番に出力されます。
21    echo $key . PHP_EOL;
22}

引数(parameters)

引数なし

引数はありません

戻り値(return)

string|int|null

RegexIterator::key() は、現在のイテレータ位置に対応するキーを返します。このキーは、マッチした部分文字列、または数値インデックスである可能性があります。マッチしなかった場合は null を返します。