PHP數(shù)組

1.數(shù)組key和value的條件限制

1.key可以是integer或者string

2.value可以是任意類型


key會有如下強(qiáng)制轉(zhuǎn)換:

1.包含有合法整型值的字符串會被轉(zhuǎn)化為整型

2.浮點(diǎn)數(shù)和布爾值也會被轉(zhuǎn)化為整型

3.鍵名null實(shí)際會被儲存為“”

4.數(shù)組和對象不能被用為鍵名

5.相同鍵名,之前會被覆蓋


2.數(shù)組的訪問

1.方括號,數(shù)組單元可以通過array[$key]語法來訪問

2.花括號,array{42}

3.方括號可以包含“表達(dá)式” 例如 $arr[func($bar)]

4.自PHP5.4起可以用數(shù)組間接引用函數(shù)或方法調(diào)用的結(jié)果

function getArray(){

? ? ? ?return array(1,2,3);

}

echo getArray()[1];


3.PHP數(shù)組類型于其他類型的轉(zhuǎn)換

1.int,float,string,boolean和resource類型轉(zhuǎn)化為數(shù)組? var_dump((array)1);

2.object 轉(zhuǎn)化為array,結(jié)果為一個(gè)數(shù)組,其單元為該對象的屬性,鍵名將成成員變量名(了解)

3.將NULL轉(zhuǎn)化為array將會得到一個(gè)空的數(shù)組 // var_dump((array)null);


4.數(shù)組的遍歷

1. for : 語句循環(huán)遍歷

2.foreach:循環(huán)遍歷 (php 推薦)

3.while:(list($key,$val) = each($fruit) )

4.array_walk、array_map :回調(diào)遍歷

? ? array_walk 采用引用的方式對數(shù)組進(jìn)行遍歷,返回值不重要 &

? ? array_map 為了改變數(shù)組的數(shù)據(jù),支持多個(gè)數(shù)組合并,目的是返回新的數(shù)組

? ? array_walk 和array_map ?de 回調(diào)函數(shù)位置也不一樣

5.current 和next :內(nèi)部指針遍歷


5.PHP數(shù)組的內(nèi)部實(shí)現(xiàn)

1. 實(shí)現(xiàn)數(shù)組使用兩個(gè)數(shù)據(jù)結(jié)構(gòu),一個(gè)是HashTable(哈希表),另一個(gè)是bucket(桶)

HashTable結(jié)構(gòu)體用于保存整個(gè)數(shù)組需要的基本信息:哈希表是根據(jù)關(guān)鍵字(key value) 而直接訪問在內(nèi)存存儲位置的數(shù)據(jù)結(jié)構(gòu)。也就是說,它是通過把鍵值通過一個(gè)函數(shù)的計(jì)算,映射到表中一個(gè)位置來訪問記錄,這加快了查找熟讀。這種映射函數(shù)稱為“哈希函數(shù)”,存放記錄的數(shù)組稱為哈希表。

key--->hash函數(shù) ----> value值(內(nèi)存塊的地址),時(shí)間復(fù)雜度為 O(1)


Bucket結(jié)構(gòu)體用于保存具體的數(shù)據(jù)內(nèi)容


6.PHP數(shù)組排序的原理

由于數(shù)組排序并不會改變數(shù)組中的元素,而只是改變了數(shù)組中元素的位置,因此,對底層而言,實(shí)際上只是對全局的雙鏈表進(jìn)行排序


7.PHP 位運(yùn)算

1.判斷int型變量a是奇數(shù)還是偶數(shù): a&1 = 0 偶數(shù) a&1 = 1 奇數(shù)

2.乘法運(yùn)算轉(zhuǎn)化為位運(yùn)算:a*(2^n) ?等價(jià)于 a<<n [左移一位 乘以2,左移兩位 乘以4 .....以此類推]

3.除法運(yùn)算轉(zhuǎn)化為位運(yùn)算:a/(2^n) ?等價(jià)于 a>>n

4.不用temp交換兩個(gè)整數(shù) x^=y;y^=x;x^=y;



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、數(shù)組操作的基本函數(shù) 數(shù)組的鍵名和值 array_values($arr);獲得數(shù)組的值,返回含所有值的索引數(shù)組...
    zshanjun閱讀 844評論 0 2
  • 數(shù)組的概述 PHP 中的數(shù)組實(shí)際上是一個(gè)有序圖。圖是一種把 values 映射到 keys 的類型。此類型在很多方...
    dptms閱讀 1,738評論 0 4
  • 大家不要吐槽我寫的亂,其實(shí)是簡書的markdown編輯器有問題,看內(nèi)容感覺寫的很亂。我聯(lián)系過簡書的技術(shù)人員,連我理...
    Airmole閱讀 1,013評論 0 4
  • php數(shù)組的操作(合并,拆分,刪除,排序) 1. 合并數(shù)組 array_merge ( array $array1...
    kevinYY閱讀 3,251評論 0 3
  • 單位的裝訂機(jī)壞了修,修了壞。 反反復(fù)復(fù)幾次,它在我的眼中已經(jīng)等同于廢鐵一塊了。 即使以后工作需要,要強(qiáng)行使用它。我...
    塔塔妹閱讀 321評論 4 1

友情鏈接更多精彩內(nèi)容