PHP之數組函數歸類
數組之所以強大,除了本身聲明、存儲方式靈活,它還有堅強后盾:一系列功能各異的數組處理函數。就像一只軍隊,除了領隊將軍本身能征善戰,指揮英明之外,還有一群不怕死、忠實於他的士兵,這樣才能顯得整體的強大。
由於函數眾多,易記混,況且還有手冊在那兒,但是,最好還是每一個都魯一遍,說不定要用到呢~
一、鍵/值處理
array_values() 返回數組中的值
array_keys 返回數組中的鍵名
array_change_key_case 返回全為大寫會小寫的數組的鍵名
array_column 返回指定鍵名的列,版本須>=5.5
in_array/array_search 判斷值是否在數組中,注意默認為不嚴格的比較,不對型和值同時作檢查,只要能轉為相同的值就可以
array_key_exists 判斷鍵是否在數組中
array_flip 將鍵與值反轉,對調位置,鍵變為值,值變為鍵。對於相同的值,變換為鍵后,后面的鍵將把前面的鍵覆蓋
array_reverse 倒置數組,與原順序相反
二、全值統計
array_sum 求數組中的所有值的和
array_product 求數組中所有值得積
count/sizeof 返回數組中元素個數
array_count_values 返回每個值出現的次數,鍵名為該值
三、切刪處理
array_chunk 將數組分塊,比如將一維數組切分成更小size的數組,最后各個數組整合在一起形成二維數組返回
array_slice 從數組中切一段返回,注意傳入偏移、長度參數的正負,偏移為正則從數組左邊開始,為負則從末端倒數這么多個開始。長度為正則切出這么多個,為負則切到末端倒數到這個長度值為止
array_splice 從數組中切出一段,要么刪除,要么用其他值代替刪除的一部分,注意傳入偏移和長度參數的正負
array_unique 將重復值歸並為一個,非嚴格判斷
四、填充處理
array_pad 用指定值將數組填充到指定長度,指定長度小於本身長度時不作處理
array_fill 指定偏移、長度、填充值,返回填充后的數組
array_fill_keys(array $keys, mixed $value) 以一個作為鍵的數組和指定值來生成一個數組
五、集合運算
array_diff 差集,僅比較值
array_diff_key 差集,僅比較鍵
array_diff_assoc 差集,比較鍵和值,即當鍵與值均相同時才被認為是同樣的元素。判斷同與不同均執行嚴格的全等於檢查
array_diff_ukeys 使用用戶自定義函數,通過鍵名比較,帶u的表示user,即用戶自定義的比較形式
array_diff_uassoc 自定義函數,鍵和值比較差值運算
array_intersect 交集運算,類上
array_intersect_key
array_intersect_assoc
array_intersect_ukey
array_intersect_uassoc
array_merge 並集,注意當為字符串索引且相同時后一個值會覆蓋前一個值,當為整數索引時只會將后一個值附加上來
array_merge_recursive 遞歸合並,即當數組中元素仍為數組時,繼續執行並操作,注意此時相同的字符串鍵名的元素會合並到同一個數組中去,整數索引的元素仍為附加
對於差集和交集,還有用回調函數處理值的(array_udiff),或同時使用兩個回調函數來處理鍵和值(array_udiff_uassoc、array_uintersect_uassoc)等等。
六、類數據結構處理
array_push 從數組末尾添加元素,可一次添加多個
array_pop 從末端彈出一個元素
array_shift 從頭部彈出一個元素
array_unshift 從頭部添加一個元素
以上函數就可以模擬棧、隊列等結構
七、使用回調函數
array_reduce 使用自定義函數將數組中的值轉化為一個值,比如相乘、相加等
array_walk 對數組中每個元素使用回調函數遍歷一遍
array_walk_recursive 上面的遞歸版本,子元素為數組時,將子元素中的每一個元素再使用回調函數處理一遍
array_filter 使用回調函數設定條件,對數組元素過濾,比如取奇數
array_map 可以傳遞多個數組,回調函數的參數個數需與數組參數個數保持一致,遍歷處理時參數與數組參數順序一一對應,返回回調處理后的一維數組。如果數組元素不夠將以空代替
八、排序函數
sort 升序排列,可以更改各種排序模式
rsort 降序排列(r:reverse,顛倒,倒置,即反向的意思)
usort 使用用戶自定義函數排序
asort 升序排列,保持原索引不變
arsort 類上的降序排列
uasort 用戶自定義函數升序排列,保持原鍵名
ksort 按照鍵名,升序排列
uksort 使用用戶自定義函數,按照鍵名升序排列
krsort 按照鍵名,降序排列
natsort 使用自然排序法進行升序排列
natcasesort natsort不區分大小寫的版本
array_multisort 對多個或多維數組排序,實現多個或多維數組聯動排序,可達到SQL語句的order by多個字段的效果
九、其他函數
range 生成指定范圍的索引數組
array_rand 隨機返回數組中的若干個鍵名,默認返回一個
shuffle 將數組內元素打亂
array_combine 以一個數組值作為鍵,另一個數組值作為值,聯接生成一個數組
implode 將數組連接為一個字符串
explode 將字符串劈分成一個數組