【PHP8.x】seekメソッドの使い方
seekメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
seekメソッドは、LimitIteratorオブジェクトが指し示す現在の要素の位置を、指定した位置へ移動させるために実行するメソッドです。LimitIteratorは、元のイテレータの一部分を切り取って反復処理を行いますが、seekメソッドはこの切り取られた範囲内での位置を指定します。引数として0から始まる整数値を指定すると、イテレータのポインタがその位置に移動します。例えば、引数に1を指定した場合、切り取られた範囲の2番目の要素へ移動します。内部的には、元のイテレータに対して「LimitIterator作成時に指定したオフセット + seekメソッドで指定した位置」の場所へ移動する処理が行われます。もし、指定した位置がLimitIteratorで定められた有効な範囲の外であった場合、OutOfBoundsExceptionという例外が発生するため注意が必要です。このメソッドは、イテレータの特定の部分集合の中から、さらに特定の位置の要素に直接アクセスしたい場合に役立ちます。
構文(syntax)
1<?php 2 3$array = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; 4$arrayIterator = new ArrayIterator($array); 5 6// 配列のインデックス2から3要素分 ('C', 'D', 'E') に制限します 7$limitIterator = new LimitIterator($arrayIterator, 2, 3); 8 9// 制限された範囲内のインデックス1 (2番目の要素 'D') に移動します 10$limitIterator->seek(1); 11 12// 現在位置のキーと値を出力します 13// seek()で指定した位置は元の配列のキーとは異なることに注意してください 14echo 'Key: ' . $limitIterator->key() . PHP_EOL; // 出力: Key: 3 15echo 'Value: ' . $limitIterator->current() . PHP_EOL; // 出力: Value: D 16 17?>
引数(parameters)
int $position
- int $position: 移動したい位置を指定する整数
戻り値(return)
int
指定された位置にイテレータを移動させた後の、現在のイテレータの位置(インデックス)を返します。