首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 陣列操作函數實戰速查:鍵值大小寫、分塊、差集、翻轉、映射、遞歸合併、縮減、替換、切片、指針遍歷

     編輯:PHP 綜合知識

PHP 提供 80+ 陣列函數,本文精選 20 個高頻實用函數,按功能分類附最小示例,作為開發時的桌邊速查卡。

鍵名大小寫統一

array_change_key_case($arr, CASE_UPPER/CASE_LOWER)

分塊

array_chunk($arr, $size, $preserve_keys=true/false)

差集/交集/並集

array_diff_assoc($a1, $a2) // 鍵值都比較
array_diff($a1, $a2)       // 僅比較值
array_intersect_assoc()    // 交集(鍵值)
array_intersect()          // 交集(值)

填充

array_fill($start_index, $num, $value) // 可負索引

翻轉(鍵值互換)

array_flip($arr) // 值必須為 string/int,重複值後者覆蓋

映射(逐元素應用回調)

array_map('callback', $arr1, $arr2...) // 回調參數數 = 陣列數
// 示例:平方
array_map(function($n){ return $n*$n; }, [1,2,3,4,5]); // [1,4,9,16,25]

遞歸合併(鍵名衝突不覆蓋,改為遞歸合併子陣列)

array_merge_recursive($a1, $a2)
/* ['color'=>['fav'=>'red'], 5] + [10, ['fav'=>'yellow','blue']]
   → ['color'=>['fav'=>['red',['yellow','blue']]], 0=>5, 1=>10] */

縮減(迭代歸約為單值)

array_reduce($arr, 'callback', $initial)
/* callback($carry, $item) → new_carry
   sum:  array_reduce([1,2,3,4,5], function($c,$w){$c+=$w;return $c;}) → 15
   mul:  array_reduce([1,2,3,4,5], function($c,$w){$c*=$w;return $c;}, 10) → 1200
   empty+initial: array_reduce([], 'sum', 1) → 1 */

替換(後者鍵值覆蓋前者)

array_replace($base, $repl1, $repl2...)
/* ['orange','banana','apple','raspberry'] + [0=>'pineapple',4=>'cherry'] + [0=>'grape']
   → ['grape','banana','apple','raspberry','cherry'] */

切片/刪除/插入 array_splice

array_splice(&$input, $offset, $length, $replacement)
// 移除 $offset 起 $length 個,可選插入 $replacement
// 返回被移除元素陣列
// 負 offset/length 從末尾計算

指針遍歷(內部指標操作)

key($arr)        // 當前鍵
current($arr)    // 當前值
next/prev($arr)  // 移動指針
reset/end($arr)  // 歸零/移至末尾
each($arr)       // 返回[key,value]並前進(PHP 7.2 棄用,建議 foreach)

其他高頻函數

array_keys/array_values           // 取所有鍵/值
array_key_exists/in_array         // 鍵/值存在性
array_search                      // 值搜索返回鍵
array_unique                      // 去重(值)
array_count_values                // 值頻次統計
array_column($arr, 'col')         // 提取二維陣列某列 (PHP 5.5+)
array_combine($keys, $values)     // 組合成關聯陣列
array_filter($arr, 'callback')    // 過濾
array_walk(&$arr, 'callback')     // 遍歷修改(引用)
shuffle(&$arr)                    // 打亂順序
sort/rsort/asort/arsort/ksort/krsort // 各種排序(引用修改)

效能提示

  • isset($arr[$key]) 比 array_key_exists 快 3 倍(但不檢查 null 值)
  • 大陣列去重用 array_flip(array_flip($arr)) 比 array_unique 快
  • 頻繁 in_array 檢查時,先 $flip = array_flip($arr) 再用 isset

背熟這 20 個函數,覆蓋 95% 陣列操作場景,代碼更簡潔、效能更穩健。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved