【PHP8.x】MultipleIterator::key()メソッドの使い方
keyメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
keyメソッドは、複数のイテレータをまとめて処理するMultipleIteratorオブジェクトが、現在指し示している要素群の「キー」を取得するメソッドです。MultipleIteratorは、複数の配列やオブジェクトなどの異なるデータ構造を同時に反復処理する際に利用され、それぞれのイテレータの要素を同期的にアクセスすることを可能にします。このkeyメソッドが返すのは、個々のサブイテレータが現在指し示している要素自体のキーではなく、MultipleIterator自体が管理する、現在有効なサブイテレータ群の「識別子」です。
返されるキーの具体的な値は、MultipleIteratorのインスタンスを生成する際に設定するフラグによって異なります。特別なフラグを指定しない場合、keyメソッドは、サブイテレータがMultipleIteratorに追加された順序を示す数値インデックス(0から始まる整数)を返します。これは、何番目のサブイテレータの要素が現在処理されているかを示します。
一方、MultipleIterator::MIT_KEYS_ASSOCフラグを指定してMultipleIteratorを構築した場合、keyメソッドは、attachIteratorメソッドでサブイテレータを追加する際に指定した「エイリアス」(キー)を返します。このエイリアスは、例えばサブイテレータを一意に識別するための文字列やオブジェクトなど、より意味のある形で指定できます。これにより、現在処理中の要素がどのデータソースに由来するものなのかを、開発者が意図した識別子で把握できるようになり、複数の異なるデータセットを並行して扱うプログラムの可読性と保守性を向上させるのに役立ちます。
構文(syntax)
1<?php 2$mi = new MultipleIterator(MultipleIterator::MIT_NEED_ALL | MultipleIterator::MIT_KEYS_ASSOC); 3$mi->attachIterator(new ArrayIterator(['apple', 'banana']), 'fruits'); 4$mi->attachIterator(new ArrayIterator([100, 200]), 'prices'); 5 6// イテレータを巻き戻し、最初の要素にセット 7$mi->rewind(); 8 9// 現在のイテレータのキーを取得 10$currentKeys = $mi->key(); 11print_r($currentKeys); 12 13// 次の要素に進み、再度キーを取得 14$mi->next(); 15$nextKeys = $mi->key(); 16print_r($nextKeys); 17?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
array|int|string|null
MultipleIterator::key() は、現在イテレータが指している要素のキーを返します。キーは、イテレータに格納されている各イテレータのキーの配列、または数値や文字列、あるいはキーが存在しない場合は null を返します。