1.4 迭代器
1.4.1 遍历数组
手动遍历数组
步骤:
1、复位数组指针 reset()
2、检查指针是否合法 获取当前指针,如果不为null就是合法的
3、获取当前值 current()
4、获取当前键 key()
5、指针下移 next()
代码实现
<?php
$stu=['tom','berry','ketty','rose'];
reset($stu); //复位指针
while(key($stu)!==null){//键合法
echo key($stu),'-',current($stu),'<br>';//获取键、值
next($stu); //指针下移
}
/*
0-tom
1-berry
2-ketty
3-rose
*/
1.4.2 迭代器
迭代器是PHP内置的接口
场景:遍历对象,获取的是对象中属性保存的数组
<?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('tom');
$class->addStu('berry');
$class->addStu('ketty');
//遍历班级
foreach($class as $k=>$v){
echo "{$k}-{$v}<br>";
}
/*
0-tom
1-berry
2-ketty
*/