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>";
    }
    ?>
    
  • 相关阅读:
    简单介绍数据流动的控制
    数据再寄存器中的暂时保存
    八位三态数据通路控制器的逻辑电路设计讲解
    什么是同步有限状态机???
    verilog逻辑复制
    流水线经典讲解!!!!!
    流水线(pipe-line)简介
    总线(BUS)和总线操作
    多路选择器(multiplexer)简介
    使用telnet发送HTTP请求
  • 原文地址:https://www.cnblogs.com/SharkJiao/p/14127977.html
Copyright © 2011-2022 走看看