ArrayIterator::seek

(PHP 5, PHP 7, PHP 8)

ArrayIterator::seekПеремещает указатель на выбранную позицию

Описание

public ArrayIterator::seek(int $offset): void

Метод перемещает указатель итератора на заданную позицию.

Список параметров

offset

Позиция, на которую требуется переместить указатель.

Возвращаемые значения

Функция не возвращает значения после выполнения.

Ошибки

Метод выбрасывает исключение OutOfBoundsException, если в параметр offset передали смещение, которое выходит за пределы доступного диапазона.

Добавить

Примечания пользователей 2 notes

up
6
jon at ngsthings dot com
16 years ago
<?php
// didn't see any code demos...here's one from an app I'm working on

$array = array('1' => 'one',
'2' => 'two',
'3' => 'three');

$arrayobject = new ArrayObject($array);
$iterator = $arrayobject->getIterator();

if(
$iterator->valid()){
$iterator->seek(1); // expected: two, output: two
echo $iterator->current(); // two
}

?>
up
4
foalford at gmail dot com
8 years ago
<?php
//seek alter the iterator's internal indice instead of the value that key() returns.
//This is a big trap if combining with uasort/natsort function.

$a = new ArrayObject([4,3,2,1]);
$it = $a->getIterator();
$it->natsort(); //The Iterator preserve the key while sorting the array
$it->rewind();
$first = $it->key(); //The first element is 1 and it's key is 3
echo $first. PHP_EOL; // 3

$it->next();
$second = $it->key();
echo
$second. PHP_EOL; //2

$it->next();
$it->seek($first); //Was intended to seek to element 1, key 3, indice 0
echo $it->key() . PHP_EOL; //end up 0 because seek took parameter as indice instead of key. It seek to element indice 3, element 4 key 0.

var_dump($it);

/* Output:
3
2
0
object(ArrayIterator)#2 (1) {
["storage":"ArrayIterator":private]=>
object(ArrayObject)#1 (1) {
["storage":"ArrayObject":private]=>
array(4) {
[3]=>
int(1)
[2]=>
int(2)
[1]=>
int(3)
[0]=>
int(4)
}
}
}
*/
To Top