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

  • 相关阅读:
    JAVA C 数据类型对应
    JAVA javah
    JAVA java
    JAVA javac
    JAVA jar命令(一)-jar打包class文件
    Unity 中调用Android的JAVA代码
    unity 打包Apk生成签名证书keystore
    SQL Server 备份还原
    C/C++ warning C4251: class ... 需要有 dll 接口由 class“..” 的客户端使用
    如何修复 WordPress 中的 HTTP 错误
  • 原文地址:https://www.cnblogs.com/xiaowie/p/14298010.html
Copyright © 2011-2022 走看看