當前位置:
首頁 > 知識 > 《PHP技術大全·第一卷》之數組 Array 細緻解讀

《PHP技術大全·第一卷》之數組 Array 細緻解讀

《PHP技術大全·第一卷》之數組 Array 細緻解讀

跟其它語言的區別

學習過其它編程語言如 Java,C 等同學應該知道,這些語言的數組擁有以下兩大特點:

數組索引必須為整數,並且默認從0開始計算;

數組元素值必須為同一種類型。

官方介紹 PHP 數組實際上是一個有序的映射(map),映射是一種把多個值(values)關聯到對應的多個鍵(keys)的類型。這種映射類型在很多方面做了優化,因此可以把它當成真正的數組(就是上面說的其它編程語言的數組),或列表(向量)(list(vector)),散列表(hashTable),字典(dict),集合(collection),棧(stack),隊列(queue)以及更多的可能,這些都是比較常用的數據結構。由於數組的元素值又可以是一個數組,因此樹形結構和多維數組也是被允許的。當然,如果同學們想了解更多關於數據結構的知識,建議購買 C語言描述《數據結構與演算法》一書,在這裡筆者就不做過多介紹了。

數組鍵(key)的約定 PHP數組的鍵(key)可以是整型或者字元串類型,而值(value)可以是任意類型。

如果你給數組的鍵不是整型或者字元串類型,則PHP會在內部對鍵的進行類型轉換(Type Casting),通過下面的代碼示例我們來看下 PHP 是如何進行數組鍵的類型轉換的。

數組常見用法

給數組末尾追加值

,請不要使用 ,因為前者性能會高出很多而且語法簡潔。

list 訪問數組值

,這樣就很快給變數賦值了。

訪問字元串的指定位置的字元

,但是字元串並非數組,這裡只是 PHP 提供的便捷訪問字元串中的字元的一種方式

完全刪除數組中指定索引的元素

,這裡要注意最好得到的是 而不是 ,另外,我們不能對字元串指定索引的字元進行unset,例如 會導致報錯並且不會產生任何效果

訪問忘記給數組鍵加引號訪問數組

,由於 hi 和 nihao 都忘記添加引號,因此 PHP 會報 E_NOTICE 級別的通知錯誤,會但在生產環境下通常 notice 的報錯通常會被隱藏,但是呢,PHP 還是會默默地在背後給你做一件事,那就是把定義兩個常量: ,但是錯誤信息還是持續報出來(實現設置 ):「PHP Notice: Use of undefined constant nihao」

強制轉換為數組類型

可以對整數,浮點數,字元串,布爾,資源(resource)類型進行強制轉換,轉換結果示例:

將一個object對象轉換成數組會比較神奇,規則如下:

若為 public 則對象屬性名就會成為數組的鍵;

若為 protected 則對象屬性名就會在前面帶上一個 null()字元,然後接上一個 * 字元,最後在對象屬性前面增加一個 null 字元,於是就組合對應的數組鍵;

若為 private 則對象屬性名會在前面帶上一個 null 字元,然後接上最後一次集成的屬性所屬的類名,接著又是一個 null 字元,於是就組合成了對應的數組鍵; 示例如下:

數組元素的修改

我們可以使用 PHP 引用的來對數組進行修改,代碼示例:

最佳實踐

PHP 數組包含很多實用的函數,請參考數組函數,記憶一些百利而無一害;

PHP 數組通常關係著系統的性能,所以在定義函數的時候,如果數組參數能夠傳引用就可以減少性能損耗,因為有時候數組參數會比較大;

本文永久更新鏈接:

https://gitee.com/nodestudy/phpgod/blob/master/zh/02.4.md


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 PHP技術大全 的精彩文章:

TP5驗證碼實現
PHP記錄用戶通過搜索引擎進網站的關鍵詞

TAG:PHP技術大全 |