【问题标题】:What is Object iteration in php什么是 php 中的对象迭代
【发布时间】:2011-07-16 10:46:57
【问题描述】:

谁能解释什么是对象迭代以及这段代码是如何工作的?

class MyIterator implements Iterator{ private $var = array(); public function __construct($array){ if (is_array($array)) { $this->var = $array; } } public function rewind() { echo "rewinding
"; reset($this->var); } public function key() { $var = key($this->var); echo "key: $var
"; return $var; } public function next() { $var = next($this->var); echo "next: $var
"; return $var; } public function valid() { $var = $this->current() !== false; echo "valid: {$var}
"; return $var; } public function current() { $var = current($this->var); echo "current: $var
"; return $var; } } $values = array(1,2,3); $it = new MyIterator($values); foreach ($it as $a => $b) { print "$a: $b
"; }

【问题讨论】:

  • 好问题,代码来自官方 php.net 手册Object iteration,我也不明白。作者不想解释它的作用和原因。

标签: php iterator spl


【解决方案1】:

Iterator 接口可能受到 Java 迭代器的启发。它提供了一个通用接口,可以使用foreach 构造不断迭代项目列表。

您的代码定义了一个实现此接口的类。它基本上提供了与原生支持的数组相同的功能,但添加了一些回显语句。

为什么要使用迭代器?

Iterator 的优势在于它提供了一个高级抽象接口,因此调用它的代码不需要太担心发生了什么。同时,它允许您以块的形式处理大型数据源(从数据库中获取行,从文件中读取行),而无需一次将所有内容加载到内存中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 2018-08-16
    • 2011-08-12
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    相关资源
    最近更新 更多