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开发模式(简写版)
Mar 15 PHP
PHP合并数组+与array_merge的区别分析
Aug 01 PHP
PHP中用正则表达式清除字符串的空白
Jan 17 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
Jul 19 PHP
利用php获取服务器时间的实现代码
Jun 07 PHP
php中通过数组进行高效随机抽取指定条记录的算法
Sep 09 PHP
Zend Framework数据库操作方法实例总结
Dec 11 PHP
PHP中关键字interface和implements详解
Jun 14 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
Laravel框架之解决前端显示图片问题
Oct 24 PHP
PHP 图片合成、仿微信群头像的方法示例
Oct 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
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
2009/04/24 PHP
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
深入理解PHP之源码目录结构与功能说明
2016/06/01 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
js 编程笔记 无名函数
2011/06/28 Javascript
node.js中的console.assert方法使用说明
2014/12/10 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
JavaScript模拟重力状态下抛物运动的方法
2015/03/03 Javascript
javascript 实现map集合
2015/04/03 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
jQuery三级下拉列表导航菜单代码分享
2020/04/15 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
详解AngularJS中的表单验证(推荐)
2016/11/17 Javascript
jquery实现左右轮播图效果
2017/09/28 jQuery
vue 获取url里参数的两种方法小结
2020/11/12 Javascript
[01:01:43]EG vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
python基于queue和threading实现多线程下载实例
2014/10/08 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
法学专业个人求职信
2013/09/26 职场文书
法人代表委托书
2014/04/04 职场文书
个人合作协议书范本
2014/04/18 职场文书
交通文明倡议书
2014/05/16 职场文书
结婚通知短信大全
2015/04/17 职场文书
经济纠纷起诉状
2015/05/20 职场文书
大学开学典礼新闻稿
2015/07/17 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
教师节随笔
2015/08/15 职场文书
MySQL系列之三 基础篇
2021/07/02 MySQL
使用goaccess分析nginx日志的详细方法
2021/07/09 Servers
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python
《现实主义勇者的王国再建记》第三弹OST全曲试听片段公开
2022/04/04 日漫
在SQL Server中使用 Try Catch 处理异常的示例详解
2022/07/15 SQL Server