《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
※TP5驗證碼實現
※PHP記錄用戶通過搜索引擎進網站的關鍵詞
TAG:PHP技術大全 |