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会自动调用接口中的方法实现循环输出

  • 相关阅读:
    CSS选择符详解之关系选择符篇
    linux基础命令入门
    asp.net 大数据导出execl实现分开压缩并下载
    一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
    Git学习笔记
    ssalesforce IoT
    根据生日自动计算年龄
    Salesforce简单练习案例
    JavaScript对象
    JavaScript函数
  • 原文地址:https://www.cnblogs.com/xiaowie/p/14298010.html
Copyright © 2011-2022 走看看