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 相关文章推荐
如何在WIN2K下安装PHP4.04
Oct 09 PHP
使用cookie实现统计访问者登陆次数
Jun 08 PHP
php数组去重实例及分析
Nov 26 PHP
php实现的css文件背景图片下载器代码
Nov 11 PHP
浅谈本地WAMP环境的搭建
May 13 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
laravel学习教程之关联模型
Jul 30 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
Nov 09 PHP
php计算多个集合的笛卡尔积实例详解
Feb 16 PHP
PHP使用redis消息队列发布微博的方法示例
Jun 22 PHP
深入理解PHP的远程多会话调试
Sep 21 PHP
php使用imagecopymerge()函数创建半透明水印
Jan 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
用PHP查询域名状态whois的类
2006/11/25 PHP
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
2019/05/09 PHP
jQuery数组处理方法汇总
2011/06/20 Javascript
js操作textarea 常用方法总结
2012/12/03 Javascript
javascript实现滑动解锁功能
2014/12/31 Javascript
js获取页面description的方法
2015/05/21 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
vue实现树形菜单效果
2018/03/19 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
vue生命周期实例小结
2018/08/15 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
深入理解es6块级作用域的使用
2019/03/28 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
2019/09/06 Javascript
vue循环数组改变点击文字的颜色
2019/10/14 Javascript
Javascript基于OOP实实现探测器功能代码实例
2020/08/26 Javascript
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
Python3搜索及替换文件中文本的方法
2015/05/22 Python
一篇文章快速了解Python的GIL
2018/01/12 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
Python读取stdin方法实例
2019/05/24 Python
python日志模块logbook使用方法
2019/09/19 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
应届生护士求职信
2013/11/01 职场文书
资产经营总监岗位职责范文
2013/12/01 职场文书
生产文员岗位职责
2014/04/05 职场文书
大学生见习报告范文
2014/11/03 职场文书
2015年公司工作总结
2015/04/25 职场文书
刑事撤诉申请书
2015/05/18 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书