php迭代器
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 //返回数组第一个元素的key 49 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 }
执行结果: