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 相关文章推荐
如何限制访问者的ip(PHPBB的代码)
Oct 09 PHP
php 魔术函数使用说明
Feb 21 PHP
谷歌音乐搜索栏的提示功能php修正代码
May 09 PHP
在PHP中利用wsdl创建标准webservice的实现代码
Dec 07 PHP
php calender(日历)二个版本代码示例(解决2038问题)
Dec 24 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
set_exception_handler函数在ThinkPHP中的用法
Oct 31 PHP
php实现源代码加密的方法
Jul 11 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
Dec 23 PHP
laravel5实现微信第三方登录功能
Dec 06 PHP
laravel Model 执行事务的实现
Oct 10 PHP
laravel 解决路由除了根目录其他都404的问题
Oct 18 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
德生PL330测评
2021/03/02 无线电
PHP 柱状图实现代码
2009/12/04 PHP
创建数据库php代码 用PHP写出自己的BLOG系统
2010/04/12 PHP
PHP学习笔记之三 数据库基本操作
2011/01/17 PHP
php引用地址改变变量值的问题
2012/03/23 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
2016/03/21 PHP
php实现xml转换数组的方法示例
2017/02/03 PHP
PDO::getAttribute讲解
2019/01/28 PHP
YII框架关联查询操作示例
2019/04/29 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
JavaScript String 对象常用方法总结
2016/04/28 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
vue实现打印功能的两种方法
2018/09/07 Javascript
4个顶级JavaScript高级文本编辑器
2018/10/10 Javascript
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
js实现列表按字母排序
2020/08/11 Javascript
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
Python编程中对super函数的正确理解和用法解析
2016/07/02 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
python 实现aes256加密
2020/11/27 Python
css3简单练习实现遨游浏览器logo的绘制
2013/01/30 HTML / CSS
幼儿园托班开学寄语
2014/01/18 职场文书
大学自主招生自荐信范文
2014/02/26 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
文案策划岗位职责
2015/02/11 职场文书
男方婚前保证书
2015/02/28 职场文书
走进毛泽东观后感
2015/06/04 职场文书
2015新教师教学工作总结
2015/07/22 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书