ArrayIterator::seek

(PHP 5, PHP 7, PHP 8)

ArrayIterator::seek跳转到位置

描述

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

此函数目前没有文档记录;仅提供其参数列表。

参数

offset

要跳转到的位置。

返回值

不返回值。

添加注释

用户贡献的注释 2 个注释

jon at ngsthings dot com
15 年前
<?php
// 没有看到任何代码演示...这里有一个来自我正在开发的应用程序的演示

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

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

if(
$iterator->valid()){
$iterator->seek(1); // 预期:two,输出:two
echo $iterator->current(); // two
}

?>
foalford at gmail dot com
8 年前
<?php
// seek 改变迭代器的内部索引而不是 key() 返回的值。
// 如果与 uasort/natsort 函数结合使用,这是一个很大的陷阱。

$a = new ArrayObject([4,3,2,1]);
$it = $a->getIterator();
$it->natsort(); // 迭代器在排序数组时保留键
$it->rewind();
$first = $it->key(); // 第一个元素是 1,其键是 3
echo $first. PHP_EOL; // 3

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

$it->next();
$it->seek($first); // 旨在跳转到元素 1,键 3,索引 0
echo $it->key() . PHP_EOL; // 最终为 0,因为 seek 将参数作为索引而不是键。它跳转到元素索引 3,元素 4 键 0。

var_dump($it);

/* 输出:
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