zoukankan      html  css  js  c++  java
  • php迭代器

    php提供了一个语法结构用于遍历数组和对象

    foreach

    遍历数组用法

    1 <php
    2 //定义一个数组
    3 $arr = array("1","2","3","4","5");
    4 //用foreach遍历
    5 foreach($arr as $key => $value){
    6     echo '键名:'.$key.'键值:'.$value."<br>";
    7 }8 ?>    

    输出结果:

    键名:0键值:1
    键名:1键值:2
    键名:2键值:3
    键名:3键值:4
    键名:4键值:5

    而foreach则不能直接遍历对象里面的属性,需要通过迭代器(预定义接口)

    最基本的迭代器接口是Iterator

    Iterator里面规范了如下方法:

    1 Iterator extends Traversable {
    2 /* 方法 */
    3 abstract public mixed current ( void )//返回当前元素
    4 abstract public scalar key ( void )//返回当前元素的键
    5 abstract public void next ( void )//向前移动到下一个元素
    6 abstract public void rewind ( void )//返回到迭代器的第一个元素
    7 abstract public boolean valid ( void )//检查当前位置是否有效
    8 }

    要进行遍历的类必须实现Iterator里面的抽象方法。

    举个例子

     1 class Season implements Iterator{
     2     private $position = 0;//指针指向0
     3     private $arr = array('春','夏','秋','冬');
     4     public function rewind(){
     5         return $this -> position = 0;
     6     }
     7     public function current(){
     8         return $this -> arr[$this -> position];
     9     }
    10     public function key(){
    11         return $this -> position;
    12     }
    13     public function next() {
    14         ++$this -> position;
    15     }
    16 
    17     public function valid() {
    18         return isset($this -> arr[$this -> position]);
    19     }
    20 }
    21 $obj = new Season;
    22 foreach ($obj as $key => $value) {
    23     echo $key.':'.$value."
    ";
    24 }
    25 ?>

    结果:

    0:春
    1:夏
    2:秋
    3:冬

    php有对数组指针的操作,可不用定义$position 

    1.key();从关联数组中取得键名,没有取到返回NULL

    2.current();返回数组中当前单元

    3.next();将数组中的内部指针向前移动一位

    4.prev();将数组的内部指针倒回一位

    5.reset();将数组的内部指针指向第一个单元

    6.end();将数组的内部指针指向最后一个单元

    以上是对迭代器Iterator的简单学习笔记。

  • 相关阅读:
    轻量级前端MVVM框架avalon
    Android开发:TextView添加超链接的简便方法
    那些年一起学过的面向对象之:4 面向对象的三大特征:封装、继承、多态
    iOS 如何创建单例对象
    phing用户手册第四章Getting Started译文
    C语言中scanf/fscanf 的%[]和%n说明符的使用方法
    listview改变选中行字体颜色
    oracle数据库单个数据文件的大小限制
    古堡算式
    java反射--注解的定义与运用以及权限拦截
  • 原文地址:https://www.cnblogs.com/wwjchina/p/7723499.html
Copyright © 2011-2022 走看看