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>";
}
?>
原文地址:https://www.cnblogs.com/SharkJiao/p/14127977.html