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>";
}
?>