foreach簡介

foreach簡介
一、數組的循環
對於索引數組,且索引有規律 0 -> N,直接使用for循環便可express

clipboard.png

結果:數組

clipboard.png

若是數組不是有規律的索引數組,用for循環就會出錯函數

clipboard.png

結果:notice錯誤,根本沒有$arr[0]
這就須要使用foreach來對數組進行循環spa

二、foreach語法
foreach 語法結構提供了遍歷數組的簡單方式
foreach 僅可以應用於數組和對象,若是嘗試應用於其餘數據類型的變量,或者未初始化的變量將發出錯誤信息指針

有兩種語法:對象

clipboard.png

紅框中的是關鍵字,不可更改
第一種格式遍歷給定的 array_expression 數組。每次循環中,當前單元的值被賦給 $value 而且數組內部的指針向前移一步,所以下一次循環中將會獲得下一個單元
第二種格式作一樣的事,而且當前單元的鍵名也會在每次循環中被賦給變量 $key
還可以自定義遍歷對象
as是關鍵字,不能少,若是用第二種語法格式,=> 也是關鍵字
這裏的key和value僅僅是一個名字,也能夠用其它
不能用數組和對象做爲鍵(key),這樣會報錯
foreach不是函數,是語言結構索引

三、用foreach分別遍歷索引數組和關聯數組ip

clipboard.png

結果:it

clipboard.png

把下標也遍歷出來io

clipboard.png

結果:

clipboard.png

遍歷關聯數組

clipboard.png

結果:

clipboard.png

這個foreach適用範圍更廣,範圍更廣指的是適用於各類形式的數組,並非指能夠foreach多種數據類型,僅能用於數組和對象

四、foreach的遍歷順序
若是是索引數組,你會發現遍歷出來的順序並非按索引大小遍歷,而是按添加的順序,若是按照索引大小遍歷,應該使用for,而不是foreach
因此foreach遍歷數組的順序是由元素的添加順序決定的,無論是索引數組仍是關聯數組

clipboard.png

結果:

clipboard.png

五、當 foreach 開始執行時,數組內部的指針會自動指向第一個單元。這意味着不須要在 foreach 循環以前調用 reset()
怎麼來理解這個呢?

clipboard.png

結果:

clipboard.png

第一個foreach已經把指針移到尾部去了,而且試圖努力的日後移動指針,直到移出界(current($arr)返回false),foreach結束foreach結束後,並無幫咱們把指針初始化,否則current應該返回數組的第一個單元,第二個foreach並無受第一個foreach的影響,當foreach開始執行時,數組內部的指針會自動指向第一個單元

相關文章
相關標籤/搜索