Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的对象迭代是什么_Php_Iterator_Spl - Fatal编程技术网

php中的对象迭代是什么

php中的对象迭代是什么,php,iterator,spl,Php,Iterator,Spl,有人能解释什么是对象迭代以及这段代码是如何工作的吗 class MyIterator implements Iterator{ private $var = array(); public function __construct($array){ if (is_array($array)) { $this->var = $array; } } public function rewind() { echo

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

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
"; }
类MyIterator实现了迭代器{ private$var=array(); 公共函数构造($array){ if(is_数组($array)){ $this->var=$array; } } 公共函数倒带(){ 回音“倒带
”; 重置($this->var); } 公共函数密钥(){ $var=key($this->var); echo“键:$var
”; 返回$var; } 公共职能下一步(){ $var=next($this->var); 回显“下一步:$var
”; 返回$var; } 公共函数有效(){ $var=$this->current()!==false; echo“valid:{$var}
”; 返回$var; } 公共职能(当前){ $var=当前($this->var); 回声“电流:$var
”; 返回$var; } } $values=数组(1,2,3); $it=新的MyIterator($value); foreach($a=>$b){ 打印“$a:$b
”; }
该接口可能受Java迭代器的启发。它提供了一个通用接口,可以使用
foreach
构造连续迭代项目列表

您的代码定义了一个实现此接口的类。它基本上提供了与阵列本机支持的功能相同的功能,但添加了一些echo语句

为什么要使用迭代器


迭代器的优点是它提供了一个高级抽象接口,因此调用它的代码不需要太担心正在发生的事情。同时,它允许您分块处理大型数据源(从数据库中获取行,从文件中读取行),而无需立即将所有内容加载到内存中。

好问题,代码来自正式的php.net手册,我也不知道。作者不想解释它的作用和原因。