php之數組指標詳解

來源:互聯網
上載者:User

本文主要和大家分享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遍曆數組

升級化操作:

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



利用 list結構

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


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

利用list簡化的結果:



其實:只要有迴圈結構,指標操作就可以完成遍曆數組


三、數組的指標問題討論


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



如果原數組指標已經非法了呢?


再看:



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

該現象的原因是:

1, 如果數組指標位置非法,複製時,會將新數組指標初始化!

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

寫時複製的兩個要點:

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


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





注意,current也會發出寫操作,導致空間被複製!先current誰,誰是那個新的,指標被初始化!


foreach時

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.