PHP预定义接口――Iterator用法示例


Posted in PHP onJune 05, 2020

本文实例讲述了PHP预定义接口——Iterator用法。分享给大家供大家参考,具体如下:

Iterator(迭代器)接口

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

接口摘要

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

例:

<?php
class myIterator implements Iterator
{
  private $position = 0;
  private $array = array(
    'first_element',
    'second_element',
    'last_element',
  );

  /**
   * 重置键的位置
   */
  public function rewind(): void
  {
    var_dump(__METHOD__);
    $this->position = 0;
  }

  /**
   * 返回当前元素
   */
  public function current()
  {
    var_dump(__METHOD__);
    return $this->array[$this->position];
  }

  /**
   * 返回当前元素的键
   * @return int
   */
  public function key(): int
  {
    var_dump(__METHOD__);
    return $this->position;
  }

  /**
   * 将键移动到下一位
   */
  public function next(): void
  {
    var_dump(__METHOD__);
    ++$this->position;
  }

  /**
   * 判断键所在位置的元素是否存在
   * @return bool
   */
  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 'myIterator::rewind' (length=18)
string 'myIterator::valid' (length=17)
string 'myIterator::current' (length=19)
string 'myIterator::key' (length=15)
int 0
string 'first_element' (length=13)
string 'myIterator::next' (length=16)
string 'myIterator::valid' (length=17)
string 'myIterator::current' (length=19)
string 'myIterator::key' (length=15)
int 1
string 'second_element' (length=14)
string 'myIterator::next' (length=16)
string 'myIterator::valid' (length=17)
string 'myIterator::current' (length=19)
string 'myIterator::key' (length=15)
int 2
string 'last_element' (length=12)
string 'myIterator::next' (length=16)
string 'myIterator::valid' (length=17)

由结果可知,当类实现了Iterator接口,实现改类实例数据集的时候首先会将数据集的键重置,然后逐步后移,每次都会进行然后返回当前元素以及当前键。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
如何正确理解PHP的错误信息
Oct 09 PHP
PHP Mysql编程之高级技巧
Aug 27 PHP
简单的PHP多图上传小程序代码
Jul 17 PHP
如何在symfony中导出为CSV文件中的数据
Oct 06 PHP
php ios推送(代码)
Jul 01 PHP
php环境无法上传文件的解决方法
Apr 30 PHP
php实现的常见排序算法汇总
Sep 08 PHP
为你总结一些php系统类函数
Oct 21 PHP
使用php+swoole对client数据实时更新(一)
Jan 07 PHP
php插入含有特殊符号数据的处理方法
Nov 24 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
Mar 28 PHP
php实现的生成排列算法示例
Jul 25 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
Jun 05 #PHP
PHP标准库 (SPL)――Countable用法示例
Jun 05 #PHP
PHP类的自动加载与命名空间用法实例分析
Jun 05 #PHP
如何在PHP中生成随机数
Jun 04 #PHP
PHP 扩展Memcached命令用法实例总结
Jun 04 #PHP
PHP正则表达式函数preg_replace用法实例分析
Jun 04 #PHP
PHP常用字符串函数用法实例总结
Jun 04 #PHP
You might like
全国FM电台频率大全 - 24 贵州省
2020/03/11 无线电
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
2007/09/30 PHP
微博短链接算法php版本实现代码
2012/09/15 PHP
APACHE的AcceptPathInfo指令使用介绍
2013/01/18 PHP
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
Jquery实现无刷新DropDownList联动实现代码
2010/03/08 Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
2013/10/23 Javascript
倒记时60刷新网页的js代码
2014/02/18 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
javascript实现Table排序的方法
2015/05/15 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
js判断鼠标位置是否在某个div中的方法
2016/02/26 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
基于jQuery插件实现点击小图显示大图效果
2016/05/11 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
js实现通过开始结束控制的计时器
2019/02/25 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
Python的Flask框架与数据库连接的教程
2015/04/20 Python
python版本的读写锁操作方法
2016/04/25 Python
在pycharm中配置Anaconda以及pip源配置详解
2019/09/09 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
python 读txt文件,按‘,’分割每行数据操作
2020/07/05 Python
django inspectdb 操作已有数据库数据的使用步骤
2021/02/07 Python
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
早读迟到检讨书
2014/01/24 职场文书
安全保卫工作竞聘材料
2014/08/25 职场文书
小平小道观后感
2015/06/09 职场文书