php迭代器

php提供了一個語法結構用於遍歷數組和對象php

foreach數組

遍歷數組用法學習

1 <php
2 //定義一個數組
3 $arr = array("1","2","3","4","5");
4 //用foreach遍歷
5 foreach($arr as $key => $value){
6     echo '鍵名:'.$key.'鍵值:'.$value."<br>";
7 }8 ?>    

輸出結果:this

鍵名:0鍵值:1
鍵名:1鍵值:2
鍵名:2鍵值:3
鍵名:3鍵值:4
鍵名:4鍵值:5spa

而foreach則不能直接遍歷對象裏面的屬性,須要經過迭代器(預約義接口)scala

最基本的迭代器接口是Iterator指針

Iterator裏面規範了以下方法:code

1 Iterator extends Traversable {
2 /* 方法 */
3 abstract public mixed current ( void )//返回當前元素
4 abstract public scalar key ( void )//返回當前元素的鍵
5 abstract public void next ( void )//向前移動到下一個元素
6 abstract public void rewind ( void )//返回到迭代器的第一個元素
7 abstract public boolean valid ( void )//檢查當前位置是否有效
8 }

要進行遍歷的類必須實現Iterator裏面的抽象方法。對象

舉個例子blog

 1 class Season implements Iterator{
 2     private $position = 0;//指針指向0
 3     private $arr = array('春','夏','秋','冬');
 4     public function rewind(){
 5         return $this -> position = 0;
 6     }
 7     public function current(){
 8         return $this -> arr[$this -> position];
 9     }
10     public function key(){
11         return $this -> position;
12     }
13     public function next() {
14         ++$this -> position;
15     }
16 
17     public function valid() {
18         return isset($this -> arr[$this -> position]);
19     }
20 }
21 $obj = new Season;
22 foreach ($obj as $key => $value) {
23     echo $key.':'.$value."\n";
24 }
25 ?>

結果:

0:春
1:夏
2:秋
3:冬

 

php有對數組指針的操做,可不用定義$position 

1.key();從關聯數組中取得鍵名,沒有取到返回NULL

2.current();返回數組中當前單元

3.next();將數組中的內部指針向前移動一位

4.prev();將數組的內部指針倒回一位

5.reset();將數組的內部指針指向第一個單元

6.end();將數組的內部指針指向最後一個單元

 

以上是對迭代器Iterator的簡單學習筆記。

相關文章
相關標籤/搜索