当前位置:首页 > PHP

php实现迭代器

2026-02-13 23:13:26PHP

实现迭代器的基本步骤

在PHP中实现迭代器需要让类实现Iterator接口。该接口包含五个必须实现的方法:current(), key(), next(), rewind(), valid()

class MyIterator implements Iterator {
    private $position = 0;
    private $array = [
        "first",
        "second",
        "third"
    ];

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

    public function current() {
        return $this->array[$this->position];
    }

    public function key() {
        return $this->position;
    }

    public function next() {
        ++$this->position;
    }

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

使用示例

创建迭代器实例后,可以直接在foreach循环中使用:

php实现迭代器

$iterator = new MyIterator();
foreach($iterator as $key => $value) {
    echo "$key: $value\n";
}

实现迭代器聚合接口

对于包含多个迭代器的集合类,可以实现IteratorAggregate接口,只需实现getIterator()方法:

php实现迭代器

class MyCollection implements IteratorAggregate {
    private $items = [];

    public function addItem($item) {
        $this->items[] = $item;
    }

    public function getIterator() {
        return new ArrayIterator($this->items);
    }
}

内置迭代器类

PHP提供了一些内置的迭代器类可以直接使用:

  • ArrayIterator: 数组迭代器
  • DirectoryIterator: 目录迭代器
  • FilesystemIterator: 文件系统迭代器
  • RecursiveIterator: 递归迭代器
$dirIterator = new DirectoryIterator('/path/to/directory');
foreach ($dirIterator as $fileinfo) {
    echo $fileinfo->getFilename() . "\n";
}

生成器实现迭代器

PHP 5.5+可以使用生成器(yield)更简单地实现迭代功能:

function xrange($start, $limit, $step = 1) {
    for ($i = $start; $i <= $limit; $i += $step) {
        yield $i;
    }
}

foreach (xrange(1, 10, 2) as $number) {
    echo "$number ";
}

这种方法内存效率更高,因为不需要一次性生成所有值。

标签: 迭代php
分享给朋友:

相关文章

php mvc实现

php mvc实现

PHP MVC 实现步骤 模型(Model)层 模型负责数据处理和业务逻辑,通常与数据库交互。创建一个基类模型,其他具体模型继承它。 class Model { protected $db;…

php 实现链表

php 实现链表

PHP 实现链表的方法 链表是一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。PHP 中可以通过类和对象来实现链表。 定义链表节点类 创建一个 ListNode 类,用于表示链…

php rsa 实现

php rsa 实现

PHP RSA 加密与解密实现 生成密钥对 使用 openssl_pkey_new 生成 RSA 密钥对,并通过 openssl_pkey_export 导出私钥。公钥可从密钥对中提取。 $conf…

php底层实现

php底层实现

PHP底层实现的核心机制 PHP是一种解释型脚本语言,其底层实现涉及多个关键组件协同工作。理解这些机制有助于优化代码性能和深度调试。 Zend引擎架构 Zend引擎是PHP的核心执行器,采用编译器与…

php实现des加密

php实现des加密

DES 加密实现方法 在 PHP 中实现 DES 加密可以通过内置的 mcrypt 或 openssl 扩展完成。由于 mcrypt 已在 PHP 7.2 中废弃,推荐使用 openssl 扩展。…

php 实现的n

php 实现的n

以下是关于 PHP 实现 N 的常见需求及解决方案的整理: 生成 N 个随机数 使用 rand() 或 mt_rand() 函数结合循环生成指定数量的随机数: $n = 10; // 生成10…