【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

指定された位置にイテレータを移動させた後の、現在のイテレータの位置(インデックス)を返します。

【PHP8.x】seekメソッドの使い方 | いっしー@Webエンジニア