首頁  >  文章  >  後端開發  >  php之數組指針詳解

php之數組指針詳解

小云云
小云云原創
2018-03-13 09:48:407228瀏覽

本文主要和大家分享php之陣列指標詳解,首先我們會和大家分享php 陣列指的針操作方法,希望能幫助大家。

一、php 陣列指標運算

利用php的內建函數:key,current,next(),prev()移到上一個,

reset()重置,移動到第一個元素,end()移動到最後一個元素上

#注意一旦指針位置非法,則不能做相對移動(next,prev),可以絕對移動(reset,end),reset,使用頻率較高! 

each(),集合了 key,current,和next三者的功能!將當前元素資訊獲得後,移動指針到下一個元素上!

元素資訊數組 = each($arr).移動指標

注意,元素資訊數組,是兩種表示方案:索引和關聯。

其中:索引:0,1分別表示鍵和值,關聯:key,value分別表示鍵和值

二、常用的指標遍歷方法

each+while+list遍歷陣列

list-each

php之數組指針詳解

#升級化操作:

將獲得鍵變數和值變數的操作,簡化!

php之數組指針詳解

利用 list結構

利用一個索引數組,同時初始化多個變數!

php之數組指針詳解


each的回傳值就包含了索引陣列0為鍵,1 為值!

利用list簡化的結果:

php之數組指針詳解


其實:只要有循環結構,指標運算就可以完成遍歷陣列


三、陣列的指標問題討論


考慮複製時的指標位置問題:

php之數組指針詳解


如果原始陣列指標已經非法了呢?

php之數組指針詳解


#再看:

php之數組指針詳解



問題是,複製後,誰先執行的current,哪個陣列指標被初始化!

此現象的原因是: 

1,  若陣列指標位置非法,複製時,會將新陣列指標初始化!

2,  值傳遞時,PHP採用了一個 COW(寫時複製,copy on write)的最佳化措施!

寫時複製的兩個要點:

在值傳遞時,並沒有馬上為新變數開闢值空間,而在兩個變數都未發生改變之前,還是使用的一個值空間


php之數組指針詳解

#

一旦某個變數改變,此時會複製值空間,讓發生改變的變數去引用新的空間!


php之數組指針詳解


php之數組指針詳解



php之數組指針詳解注意,current也會發出寫入操作,導致空間被複製!先current誰,誰是那個新的,指針被初始化!


## 

1,  遍歷的是拷貝而不是原數組!

php之數組指針詳解2,  只有在原始數組發生寫入操作時,才會真正的拷貝。此時原始數組指標停留在目前位置,如果已經非法,則會初始化!

相關推薦:

推薦php陣列指標特效

php陣列指標

###php陣列指標用法詳解#######

以上是php之數組指針詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn