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生成月历代码
Jun 14 PHP
PHP5.4中json_encode中文转码的变化小结
Jan 30 PHP
在smarty中调用php内置函数的方法
Feb 07 PHP
PHP根据IP判断地区名信息的示例代码
Mar 03 PHP
php使用PDO操作MySQL数据库实例
Dec 30 PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 PHP
在Windows系统下使用PHP生成Word文档的教程
Jul 03 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
Dec 15 PHP
PHP全局变量与超级全局变量区别分析
Apr 01 PHP
Yii2增加验证码步骤详解
Apr 25 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
Dec 19 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
Jun 29 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指定函数参数默认值示例代码
2013/12/04 PHP
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
PHP7新特性foreach 修改示例介绍
2016/08/26 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
基于jQuery的js分页代码
2010/06/10 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
完美解决iview 的select下拉框选项错位的问题
2018/03/02 Javascript
原生js实现form表单序列化的方法
2018/08/02 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
Python获取Linux系统下的本机IP地址代码分享
2014/11/07 Python
利用Python绘制MySQL数据图实现数据可视化
2015/03/30 Python
如何利用Fabric自动化你的任务
2016/10/20 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
python模块导入的方法
2019/10/24 Python
Python3打包exe代码2种方法实例解析
2020/02/17 Python
深入了解NumPy 高级索引
2020/07/24 Python
Python自动巡检H3C交换机实现过程解析
2020/08/14 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
Unix里面如何在后台运行程序
2016/10/14 面试题
学习党章思想汇报
2014/01/07 职场文书
四年级数学教学反思
2014/02/02 职场文书
出纳员岗位职责
2014/03/13 职场文书
关于旅游的活动方案
2014/08/15 职场文书
2014年采购工作总结
2014/11/20 职场文书
观看《信仰》心得体会
2016/01/15 职场文书
CSS实现九宫格布局(自适应)的示例代码
2022/02/12 HTML / CSS
再谈python_tkinter弹出对话框创建
2022/03/20 Python