php核心技術-數組的使用

來源:互聯網
上載者:User

 

數組:是一種資料類型。集合型。一組具有相同類型的資料的集合。一些 索引值對的 有序集合。Key/value 索引值對。數組是由  元素 組成:元素是一組索引值對。其中 鍵 元素下標 值 元素 值。遍曆:從頭到尾 依次去處理所有的數組元素。定位元組元素的方式:由於一個數組內 會存在很多元素,通常當我們定位元組的元素時,採用的形式都是數組的元素的 下標的方式。但有時,尤其是在遍曆(集中,迴圈處理數組內的每個元素時)時,我們採用的元素定位方式為 數組指標。 同一時刻,這個指標只能指向一個數組元素。如何獲得一個數組?如何定義一個數組?        Array();    arrayname[]=值;通常情況下,我們在定義數組的元素時,都需要為元素指定下標,與值。其中數組元素的下標,要求為整型 或者是字串類型。數組元素的值可以是任意資料類型。 下標:通常都是整型和字串型。但是如果意外的為數組元素設定了一個其他類型下標,php會嘗試將其他類型的下標轉換成合理的形式。但是不可以使用 數組和對象 作為下標。 如果在定義數組元素時,沒有制定下標的話,意味著 我們需要使用整型下標。下標的大小是根據當前的數組結構而定的。會根據當前數組內,最大的整型下標的值來確定新的下標,方式是 +1的形式。如果當前數組內沒有一個整型值,會從0 開始。如果我們需要定義一個下標從1開始的數組,應該如何定義? 如果下標的定義 是一個可以被直接轉化成 整型的字串,那麼這個字串會被轉化成整型: 與之相對,如果不能直接被轉化成整型,則繼續使用字串類型。 可以使用 Null 字元串作為下標:可以使用 負數作為下標,但是不會使用這個負數作為產生下標的依據(不會在負數的基礎上+1); Tip:以上的測試 同樣適用於與 [] 文法,也就是不同的資料類型,可以寫到中括弧內。中括弧內[],應該使用數組元素的下標來定位元素。 [運算式]內可以寫運算式  也可以寫常量:但是 當我們使用字串做下標時, 應該在字串周圍增加引號,否則則個標識符會首先被解析成常量,如果沒有相應的常量,才會被認作字串。會降低效率。甚至在存在相應常量時,商務邏輯會出現問題: Tip:出現以上問題的原因 不是由於[]的解析造成的,而是php在解析常量時 都這麼處理。  Php中由於元素的值可以是任意的資料類型,因此也可以是數群組類型。當元素的值是數群組類型時,我們可以稱作為多維陣列。但是,本質上是沒有多維陣列的。上面所說的多維陣列,只是某個數組元素的值為數組而已。同樣 如果是多維陣列的話,可以使用多個[]去訪問到某個元素的值:  數組的分類:按照數組元素的索引類型分成:索引數組和關聯陣列。索引數組:元素的下標 都是數值的數組, 典型的是 從0開始的一系列的數組元素。關聯陣列:元素的下標與元素的值有關聯性,元素下標是字串類型,字串可以具有描述資訊的功能。  但是由於php數組的特殊性,php的數組元素的下標 既可以數值索引也可以是字串關聯,可以同時存在。  因為php的數組,在資料結構上 是一個鏈表(hash表)實現的,是索引值對。由於數組內會包含多個元素,我們通常情況下都是使用的某個元素的值,因此總會遇到遍曆數組的情況。 數組的遍曆:數組的變數基本上都是依賴於數組的指標完成。當我們剛剛建立一個數組的時候,數組內部的指標是指向數組的第一個元素的。如果每次我們能夠獲得 數組指標所指向的元素的資訊的話。那麼我們能夠從頭到尾移動數組指標的話,就能夠完成數組的遍曆。我們最常用的遍曆數組的方法 就是 foreach 語言結構:

 

Foreach(需要遍曆的數組 as 儲存當前數組指標所指向的元素的值變數) {    迴圈體。可以在這裡處理當前遍曆到的數組元素} 

 

Foreach(需要遍曆的數組 as 儲存當前數組指標所指向的元素的下標變數 =>  儲存當前數組指標所指向的元素的值變數) {      迴圈體。可以在這裡處理當前遍曆到的數組元素} 注意:在上面的代碼中,我們並沒有顯示的執行 移動數組指標的操作,但是foreach會在每一次獲得元素資訊後,將當前的指標向下移動一位。並且在遍曆完成後,foreach會將數組指標移動到數組的開頭。可以保證一個數組可以被無限次的foreach。如果是多維陣列的話,應該如何遍曆? 可以在foreach中 再次嵌套foreach達到效果: Foreach的傳遞方式:值傳遞: 但是 與 第一個,值傳遞相對的 還支援引用傳遞: 如果需要修改原數組的話,還可以通過直接操作原數組的形式: 字串函數:少量一般字元串的處理,通常使用字串處理函數完成處理的方式,按照位元組去處理。Gbk編碼 一個漢字佔2個位元組Utf8編碼 一個漢字佔3個位元組。Strlen(); 長度Substr(字串,起始位置,截取長度):截取字串 按照字元去處理。例如javascript的字串就是按照字元處理。Php預設不能使用字元的方式處理,需要使用php的多位元組字元擴充來實現。Php.ini中: Mb_strlen();Mb_substr(); Regex批量字串處理,Regex。驗證使用者輸入的資料是否是郵箱? 是否符合某一個字串規則。常見的使用正則的地方:表單驗證 - 使用者資料的驗證(來自瀏覽器的資料,get,post)。會使用 javascript的正則 和 php的正則聯合處理。採集的處理 – 爬蟲:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.