SpringJDK動態代理實現
阿新 • • 發佈:2021-01-18
技術標籤:TP6Laravelphpphpjava資料結構指標
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 ?>
輸出結果:
鍵名:0鍵值:1
鍵名:1鍵值:2
鍵名:2鍵值:3
鍵名:3鍵值:4
鍵名:4鍵值:5
而foreach則不能直接遍歷物件裡面的屬性,需要通過迭代器(預定義介面)
最基本的迭代器介面是Iterator
Iterator裡面規範瞭如下方法:
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裡面的抽象方法。
舉個例子
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的簡單學習筆記。