PHP8 Iterator(迭代器)接口

2023-08-21 14:55 更新

(PHP 5, PHP 7, PHP 8)

简介

可在内部迭代自己的外部迭代器或类的接口。

接口摘要

interface Iterator extends Traversable {
/* 方法 */
public current(): mixed
public key(): mixed
public next(): void
public rewind(): void
public valid(): bool
}

预定义迭代器

PHP 已经提供了一些用于日常任务的迭代器。 详细列表参见 SPL 迭代器。

示例

示例 #1 基本用法

这个例子展示了使用 foreach 时,迭代器方法的调用顺序。

<?php
class myIterator implements Iterator {
private $position = 0;
private $array = array(
"firstelement",
"secondelement",
"lastelement",
);

public function __construct() {
$this->position = 0;
}

public function rewind(): void {
var_dump(__METHOD__);
$this->position = 0;
}

#[\ReturnTypeWillChange]
public function current() {
var_dump(__METHOD__);
return $this->array[$this->position];
}

#[\ReturnTypeWillChange]
public function key() {
var_dump(__METHOD__);
return $this->position;
}

public function next(): void {
var_dump(__METHOD__);
++$this->position;
}

public function valid(): bool {
var_dump(__METHOD__);
return isset($this->array[$this->position]);
}
}

$it = new myIterator;

foreach($it as $key => $value) {
var_dump($key, $value);
echo "\n";
}
?>

以上示例的输出类似于:

string(18) "myIterator::rewind"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(0)
string(12) "firstelement"

string(16) "myIterator::next"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(1)
string(13) "secondelement"

string(16) "myIterator::next"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(2)
string(11) "lastelement"

string(16) "myIterator::next"
string(17) "myIterator::valid"

参见

参见 遍历对象。

目录

  • Iterator::current — 返回当前元素
  • Iterator::key — 返回当前元素的键
  • Iterator::next — 向前移动到下一个元素
  • Iterator::rewind — 返回到迭代器的第一个元素
  • Iterator::valid — 检查当前位置是否有效


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号