重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
迭代器(Iterator)模式,在一个很常见的过程上提供了一个抽象:位于对象图不明部分的一组对象(或标量)集合上的迭代。
创新互联是一家专注于网站设计、成都网站制作与策划设计,邻水网站建设哪家好?创新互联做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:邻水等地区。邻水做网站价格咨询:13518219792
迭代有几种不同的具体执行方法:在数组属性,集合对象,数组,甚至一个查询结果集之上迭代。
在PHP官方手册中可以找到完整的SPL迭代器列表。得益于对PHP的强力支持,使用迭代器模式的大部分工作都包括在标准实现中,下面的代码示例就利用了标准Iterator的功能。
_content = $content; } //返回到迭代器的第一个元素 public function rewind() { $this->_index = 0; } //检查当前位置是否有效 public function valid() { return isset($this->_content[$this->_index]); } //返回当前元素 public function current() { return $this->_content[$this->_index]; } //返回当前元素的键 public function key() { return $this->_index; } //向前移动到下一个元素 public function next() { $this->_index++; } } //定义数组,生成类时使用 $arrString = array('jane','apple','orange','pear'); $testIterator = new testIterator($arrString); //开始迭代对象 foreach ( $testIterator as $key => $val ) { echo $key . '=>' . $val . '
'; }
运行可以看到如下结果:
0=>jane 1=>apple 2=>orange 3=>pear
如果有兴趣,可以在每一个函数里面开始处加上“var_dump(__METHOD__);”,这样就可以看到每个函数的调用顺序了,如下:
string(25) "testIterator::__construct" string(20) "testIterator::rewind" string(19) "testIterator::valid" string(21) "testIterator::current" string(17) "testIterator::key" 0=>jane string(18) "testIterator::next" string(19) "testIterator::valid" string(21) "testIterator::current" string(17) "testIterator::key" 1=>apple string(18) "testIterator::next" string(19) "testIterator::valid" string(21) "testIterator::current" string(17) "testIterator::key" 2=>orange string(18) "testIterator::next" string(19) "testIterator::valid" string(21) "testIterator::current" string(17) "testIterator::key" 3=>pear string(18) "testIterator::next" string(19) "testIterator::valid"