implements Iterator , 实现Iterator 的 current(); next(); key(); valid(); rewind();
1 <?php 2 /* 3 *先定义一个数组 4 *定义第一个位置 $position = 0 5 *然后返回key 和value, 6 *指向下一个位置 ++$position 7 */ 8 class myIterator implements Iterator{ 9 //先定义一个位置10 private $position = 0;11 private $array;12 13 public function __construct(array $array){14 $this->array = $array;15 }16 /**17 * 倒带第一个元素的迭代器18 * @return void 任何返回值将被忽略.19 */20 public function rewind(){21 var_dump(__METHOD__);22 $this->position = 0;23 }24 /**25 * 检查当前位置是有效的26 * @return boolean 返回值将bool型布尔,然后评估27 */28 public function valid(){29 var_dump(__METHOD__);30 //判断数组第一个元素是否存在31 return isset($this->array[$this->position]);32 }33 /**34 * 返回当前元素35 * @return mixed 可以返回任何类型。36 */37 public function current(){38 var_dump(__METHOD__);39 //返回数组的第一个元素40 return $this->array[$this->position];41 }42 /**43 * 返回当前元素的关键44 * @return mixed 标量成功,或null失败45 */46 public function key(){47 var_dump(__METHOD__);48 //返回数组第一个元素的key49 return $this->position;50 }51 /**52 * 前进到下一个元素53 * @return void 任何返回值将被忽略。54 */55 public function next(){56 var_dump(__METHOD__);57 ++ $this->position;58 }59 }60 61 $array=[62 "firstelement",63 "secondeleent",64 "lastelement"65 ];66 67 $it = new myIterator($array);68 foreach ($it as $key=>$value) {69 echo $key.' => '.$value;70 echo "<br>";71 }
执行结果: