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-迭代器_遍历数组

场景:遍历对象,获取的是对象中属性保存的数组

<?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
*/