zoukankan      html  css  js  c++  java
  • 迭代器-php预定义接口

    循环输出数组

      

    <?php 
    
        $arr=["小王","小杜","小高","小刘"];
        //重置数组指针,并且指向数组中第一个元素
        reset($arr);
        while(key($arr)!==null){  //验证键是否有效
            echo key($arr)."-". current($arr)."<br>";
            //指针下移
            next($arr);
        }
    ?>
    

      

    使用预定义接口  实现接口的方法,在我们foreach循环的时候,会自动调用方法

    <?php
    
        //创建一个类  并实现预定义接口
        class DieDai implements Iterator{
            private $list=array();
            //实现预定义中的接口方法
            //实现重置指针方法
            public function rewind(){
                reset($this->list);
            }
            //实现值的方法
            public function current(){
                return current($this->list);
            }
            //实现验证方法
            public function valid(){
                return key($this->list)!==null;
            }
            //实现当前元素的键
            public function key(){
                return key($this->list);
            }
            //实现指针下移
            public function next(){
                next($this->list);
            }
    
            public function add($name){
                $this->list[]=$name;
            }
        }
        
    
        $obj= new DieDai();
        $obj->add("小杜");
        $obj->add("小王");
        $obj->add("小高");
        $obj->add("小刘");
        foreach($obj as $k=>$v){
            echo $k."----".$v."<br>";
        }

    注意:

      如果不实现接口,那foreach循环对象,会报错,提示把数组转换成字符串,如果实现了Iterator接口,foreach会自动调用接口中的方法实现循环输出

  • 相关阅读:
    Linux:Day45(下)
    Linux:Day45(上)
    Linux:Day44(下)
    彻底理解JDK异步
    Ribbon是什么?
    RocketMQ学习笔记(一)eclipse版的quickstart
    线性表的遍历
    八皇后问题
    汉诺塔
    servlet的url-pattern规则
  • 原文地址:https://www.cnblogs.com/xiaowie/p/14298010.html
Copyright © 2011-2022 走看看