亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

對php中IteratorIterator的理解(代碼示例)

2020-03-22 19:33:08
字體:
來源:轉載
供稿:網友

本篇文章給大家帶來的內容是關于php中IteratorIterator的理解(代碼示例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

 

 

php之IteratorIterator個人理解

最近有重新開始搗鼓laravel的源碼了,一年多沒用實在是忘的差不多了,每次看都會從中學到很多,不懂就趕緊查手冊。看到加載配置文件的部分(config/*.php),代碼中大量使用spl類庫和接口,今天就來扯一下IteratorIterator類,網上資料太少了,加上本人也不是怎么聰明,搞了好幾天才有點眉目,以下是對它的個人理解。

IteratorIterator簡介

IteratorIterator是一個迭代器包裝器,當然它本身也是迭代器。它(假定它叫Outer)在實例化時必須傳入一個實現了Traversable接口類型的迭代器實例(假定它叫Inner),當然你可以通過Outer的getInnerIterator方法獲取到這個傳入的迭代器參數Inner。你可以通過Outer的rewind(),next(),valid(),html' target='_blank'>current()和key()方法對內部迭代器Inner進行處理。

重點理解

在遍歷Outer的過程中,Outer只是將rewind(),next(),valid(),current()和key()的任何調用轉發給內部迭代器Inner。

Outer可以對轉發返回的結果進行包裝,但這并不會對Inner產生任何影響。

代碼演示
 ?phpnamespace young;class InnerIterator implements Iterator{ private $dates; private $position; public function __construct($dates = []) $this- dates = $dates; $this- position = 0; public function rewind() echo call . __METHOD__ . br  reset($this- dates); public function valid()  echo call . __METHOD__ . br  if ($this- position = count($this- dates)) { # code... return false; return true; public function current() echo call . __METHOD__ . br  return $this- dates[$this- position]; public function key() echo call . __METHOD__ . br  return $this- position; public function next() echo call . __METHOD__ . br  ++$this- position; }}class OuterIterator extends IteratorIterator{ function rewind() echo __METHOD__ . br  return parent::rewind(); function valid() echo __METHOD__ . br  return parent::valid(); function current() echo __METHOD__ . br  return parent::current() . _suffix  function key() echo __METHOD__ . br  return parent::key() ; function next() echo __METHOD__ . br  return parent::next() ; function getInnerIterator()  echo __METHOD__ . br  return parent::getInnerIterator(); }}$tmpArr = array( 2018-10-01 , 2018-10-02 , // 2018-10-03 $inner = new InnerIterator($tmpArr);$outer = new OuterIterator($inner);foreach ($outer as $key = $value) { # code... echo $key , = , $value . hr }
運行結果:
youngOuterIterator::rewind
call youngInnerIterator::rewindcall youngInnerIterator::validcall youngInnerIterator::currentcall youngInnerIterator::key
youngOuterIterator::validyoungOuterIterator::currentyoungOuterIterator::key0= 2018-10-01_suffixyoungOuterIterator::next
call youngInnerIterator::nextcall youngInnerIterator::validcall youngInnerIterator::currentcall youngInnerIterator::key
youngOuterIterator::validyoungOuterIterator::currentyoungOuterIterator::key1= 2018-10-02_suffixyoungOuterIterator::next
call youngInnerIterator::nextcall youngInnerIterator::valid
 youngOuterIterator::valid object(youngInnerIterator)#1 (2) { [“dates”:“youngInnerIterator”:private]= array(2) { [0]= string(10) “2018-10-01” [1]= string(10) “2018-10-02” } [“position”:“youngInnerIterator”:private]= int(2) }
結果分析

Outer的每次迭代會先調用自己的方法,然后轉發給Inner。
Outer內部方法的返回值都是基于Inner的相對于方法的返回。
你可以在Outer內方法對Inner的返回值做邏輯處理。
當Inner的valid返回false的時候,外層的Outer也將停止迭代。
Outer內的方法對返回值的修改并不會影響Inner。
Outer內的方法在迭代過程中并不會執行getInnerIterator方法,它只是一個獲取Inner方法的調用接口。

一點補充

之前在網上翻閱資料時會看到這樣的疑惑

//假如這里還是使用了上面的兩個類代碼 ?phpnamespace young;class InnerIterator implements Iterator //code 這里的代碼假如和上面的一樣class OuterIterator extends IteratorIterator //code 這里的代碼假如和上面的一樣$outer- valid(); //false$outer- current(); // _suffix 問題一$outer- rewind(); $outer- valid(); //true$outer- current(); //2018-10-01_suffix$outer- next()$outer- rewind();$outer- current(); //2018-10-02_suffix 問題二

這里有兩個問題,

問題一,為什么當前current沒值,valid為false

問題二,問什么next后rewind之后,current是第二個值

從上面的運行結果可知,$outer不執行rewind,$inner也不會執行,所以valid返回false,current為null,_suffix只是自己拼接上的。
第二個問題也是很奇怪的,也是剛剛發現的,$inner的指針只要前進了,就回不去了,也就是說 $inner的position屬性在第一次next之后變成1了,即使你rewind,position還是1,這個有點蒙蔽啊。。。
所以如果你進行了$outer的遍歷操作,第二遍是沒值輸出的,即使第二遍也執行了rewind操作,但是這個操作在第二遍壓根就沒用~~~

以上就是對php中IteratorIterator的理解(代碼示例)的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲三级免费看| 久久久久国产精品www| 日韩电影大全免费观看2023年上| 日韩精品丝袜在线| 亚洲国产小视频在线观看| 欧美性猛交xxx| 精品视频一区在线视频| 欧美韩日一区二区| 日韩av影视综合网| 国产99在线|中文| 国产精品永久免费| 亚洲天天在线日亚洲洲精| 亚洲成人激情在线观看| 精品久久久久久久大神国产| 青青久久av北条麻妃黑人| 国产精品高潮呻吟久久av黑人| 久久福利网址导航| 久久久久99精品久久久久| 91久久久久久久久久久久久| 永久免费精品影视网站| 亚洲国产私拍精品国模在线观看| 亚洲色图50p| 亚洲精品第一国产综合精品| 亚洲人成电影网站色www| 亚洲人av在线影院| 欧美日韩中文字幕在线视频| 亚洲天堂日韩电影| 91国产美女在线观看| 在线观看亚洲视频| 91在线高清视频| 亚洲美女精品成人在线视频| 亚洲欧美日韩中文在线| 爱福利视频一区| 欧美小视频在线| 欧美视频一二三| 亚洲欧美三级伦理| 欧美日韩久久久久| 中文字幕日韩免费视频| 国产精品成人一区二区| 亚洲国产日韩欧美在线99| 91精品在线一区| 精品偷拍一区二区三区在线看| 国产精品成人播放| 精品国偷自产在线| 日韩高清av一区二区三区| 欧美性猛交xxxx免费看| 欧美床上激情在线观看| 国产精品综合网站| 最近中文字幕mv在线一区二区三区四区| 欧美电影第一页| 亚洲va国产va天堂va久久| 国产91成人video| 日本成人免费在线| 午夜精品久久久久久99热软件| 亚洲国产精品免费| 亚洲欧美制服另类日韩| 日韩av网址在线| 亚洲国产欧美日韩精品| 欧美日韩人人澡狠狠躁视频| 91影视免费在线观看| 午夜精品一区二区三区在线视频| 国产日韩av高清| 国产黑人绿帽在线第一区| 欧美精品久久久久久久| 日韩有码在线观看| 亚洲色图偷窥自拍| 午夜剧场成人观在线视频免费观看| 中文字幕av一区二区三区谷原希美| 精品五月天久久| 97在线看福利| 一本色道久久88亚洲综合88| 欧美激情图片区| 久久精品视频亚洲| 国产精品成人免费电影| 国产成人综合一区二区三区| 91麻豆桃色免费看| 欧美国产精品日韩| 欧美高清视频在线观看| 日韩最新中文字幕电影免费看| 亚洲成人精品久久久| 亚洲色图欧美制服丝袜另类第一页| 精品久久香蕉国产线看观看gif| 日韩中文字幕第一页| 亚洲四色影视在线观看| 久久这里只有精品视频首页| 欧美激情亚洲激情| 欧美性少妇18aaaa视频| 成人h视频在线观看播放| 亚洲国产精品99久久| 黑人狂躁日本妞一区二区三区| 91精品国产高清自在线看超| 国产亚洲精品久久久| 国产精品日日做人人爱| 2019中文字幕全在线观看| 国产91色在线免费| 亚洲性生活视频| 97在线观看视频| 91在线观看欧美日韩| 国产精品久久久av| 亚洲欧美日韩成人| 黄色精品一区二区| 国产精品成人av在线| 国产精品综合久久久| 亚洲综合国产精品| 亚洲欧美在线x视频| 91视频8mav| 日韩中文综合网| 91精品视频免费看| 在线视频亚洲欧美| 欧美性高跟鞋xxxxhd| 这里精品视频免费| 国产成人精品久久久| 久久久精品中文字幕| 色先锋资源久久综合5566| 日韩av不卡在线| 久久精品亚洲热| 欧美床上激情在线观看| 国内精品视频久久| 久久免费视频在线观看| 国产精品视频精品视频| 亚洲毛片在线观看| 日本一区二区三区四区视频| 精品国内自产拍在线观看| www.美女亚洲精品| 97人人爽人人喊人人模波多| 日韩国产欧美精品一区二区三区| 久久精彩免费视频| 国产伊人精品在线| 在线丨暗呦小u女国产精品| 久久久久久久久久婷婷| 2020久久国产精品| 日韩在线免费视频观看| 亚洲影院高清在线| 最近免费中文字幕视频2019| 久久久女人电视剧免费播放下载| 亚洲精品一二区| 国产91精品在线播放| 久久久精品一区二区三区| 26uuu另类亚洲欧美日本一| 精品福利免费观看| 国产日韩欧美在线观看| 精品久久久国产| 国产精品专区第二| 色综合久久悠悠| 日韩一区二区三区xxxx| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产91九色视频| 日韩精品欧美激情| 国产精品久久久久久久久影视| 国产精品久久久久久久久久久久久| 日韩中文字幕av| 国产第一区电影| 精品偷拍一区二区三区在线看| 亚洲一品av免费观看| 久久久电影免费观看完整版| 欧美激情亚洲综合一区| 国产精品一区二区久久| 色综合久久88色综合天天看泰| 欧美在线观看网址综合| 中文字幕日韩有码| 亚洲欧美日韩视频一区| 69国产精品成人在线播放| 日韩一区在线视频| 岛国视频午夜一区免费在线观看|