zoukankan      html  css  js  c++  java
  • PHP面向对象之迭代器

    迭代器

    遍历数组

    • 手动遍历数组
      • reset() 复t()位数组指针
      • 检查指针是否合法 获取当前指针,如果不为null就是合法的
      • curren 获取当前值
      • key() 获取当前键
      • next() 指针下移
    <?php
    $stu=['Sunny','Jerry','Ketty','Marry'];
    reset($stu);								//复位指针
    while(key($stu)!==null){					//键合法
    	echo key($stu),'-',current($stu),'<br>';//获取键、值
    	next($stu);								//指针下移
    }	
    ?>
    

    迭代器

    • 概念

      • 迭代器是PHP内置的接口
    • 语法

    Iterator extends Traversable {
    	// 方法
    	abstract public mixed current(void)
    	abstract public scalar key(void)
    	abstract public void next(void)
    	abstract public void rewind(void)
    	abstract public boolean valid(void)
    }
    
    • 场景
      • 遍历对象,获取的是对象中属性保存的数组
    <?php
    //定义类实现迭代器接口
    class MyClass implements Iterator{
    	//$list属性用来保存学生数组
    	private $list=array();
    	//添加学生
    	public function addStu($name) {
    		$this->list[]=$name;
    	}
    	//实现接口中的复位方法
    	public function rewind() {
    		reset($this->list);
    	}
    	//验证当前指针是否合法
    	public function valid() {
    		return key($this->list)!==null;
    	}
    	//获取值
    	public function current() {
    		return current($this->list);
    	}
    	//获取键
    	public function key() {
    		return key($this->list);
    	}
    	//指针下移
    	public function next() {
    		next($this->list);
    	}
    }
    //创建班级
    $class=new MyClass();
    //添加学生
    $class->addStu('Sunny');
    $class->addStu('Marry');
    $class->addStu('Jerry');
    //遍历班级
    foreach($class as $k=>$v){
    	echo "{$k}-{$v}<br>";
    }
    ?>
    
  • 相关阅读:
    PHP将数组转换为xml
    PHP对象转数组
    MongoDB 基础命令 (MongoDB Shell)
    PHP操作Redis常用技巧
    JavaScript 表达式 Expression
    JavaScript 语句 Statement
    JavaScript 原子常量 Atom
    encodeURI()和encodeURIComponent() 区别
    Unicode 与 JavaScript 详解
    DOCKER 相关的一些用法
  • 原文地址:https://www.cnblogs.com/SharkJiao/p/14127977.html
Copyright © 2011-2022 走看看