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 方便水印和缩略图的图形类
May 21 PHP
php获取url字符串截取路径的文件名和扩展名的函数
Jan 22 PHP
PHP输出时间差函数代码
Jan 28 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
PHP获取当前页面完整URL的实现代码
Jun 10 PHP
yii上传文件或图片实例
Apr 01 PHP
为你总结一些php信息函数
Oct 21 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
Feb 15 PHP
php实现的mongoDB单例模式操作类
Jan 20 PHP
PHP实现单例模式建立数据库连接的方法分析
Feb 11 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
Feb 26 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
域名查询代码公布
2006/10/09 PHP
PHP运行环境配置与开发环境的配置(图文教程)
2013/06/04 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
2017/11/06 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
jQuery EasyUI API 中文文档 - Menu菜单
2011/10/03 Javascript
js局部刷新页面时间具体实现
2013/07/04 Javascript
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
2016/01/27 Javascript
js中获取时间new Date()的全面介绍
2016/06/20 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
2017/02/13 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
JavaScript常用8种数组去重代码实例
2020/09/09 Javascript
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
2019/07/23 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
python文件读取失败怎么处理
2020/06/23 Python
用css3制作纸张效果(外翻卷角)
2013/02/01 HTML / CSS
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
关于是否需要写商业计划书
2014/02/07 职场文书
xxx同志考察材料
2014/02/07 职场文书
母校寄语大全
2014/04/10 职场文书
小学生期末评语大全
2014/04/21 职场文书
就业指导讲座心得体会
2016/01/15 职场文书
2016年基层党组织公开承诺书
2016/03/25 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书
Golang原生rpc(rpc服务端源码解读)
2022/04/07 Golang
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL