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

PHP 常用數組函數大全:分類速查與實戰示例

     編輯:PHP 相關知識

PHP 常用數組函數大全:分類速查與實戰示例

PHP 提供 100+ 內置數組函數,掌握核心高頻函數能大幅提升開發效率。本文按功能分類整理,附帶代碼示例與輸出結果,適合作為桌面速查手冊。

一、刪除與重組

array_splice(array, offset, length, [replacement])

從 offset 刪除 length 個元素,可選插入 replacement 數組。返回被刪除元素組成的數組,原數組被修改(鍵名重排)。

<?php
$arr = ['a'=>1, 'b'=>2, 'c'=>3, 'd'=>4];
$removed = array_splice($arr, 1, 2); // 刪除 b,c
var_dump($removed); // ['b'=>2, 'c'=>3]
var_dump($arr);     // ['a'=>1, 'd'=>4] 鍵名保持關聯
?>

二、遍歷與迭代

foreach (array as $key => $value)

唯一推薦的遍歷方式,自動重置內部指針,支持引用修改(&$value)。

<?php
$arr = ['x'=>10, 'y'=>20];
foreach ($arr as $k => &$v) { $v *= 2; }
unset($v); // 斷開引用,防污染
print_r($arr); // ['x'=>20, 'y'=>40]
?>

三、排序(按值/鍵,保持/不保持關聯)

函數排序依據順序鍵名關聯
sort值升序❌ 重建 0..n
rsort值降序❌
asort值升序✅
arsort值降序✅
ksort鍵升序✅
krsort鍵降序✅
usort/uksort/uasort自定義回調自定視函數而定

自然排序:natsort()、natcasesort()(不區分大小寫),處理 img1.png, img2.png, img10.png 此類字符串數字排序極佳。

四、數學統計

  • array_sum():值求和。
  • array_product():值求積。
  • count() / sizeof():元素個數(遞歸模式 COUNT_RECURSIVE)。
  • array_count_values():統計值出現次數。

五、查找與過濾

  • in_array($needle, $haystack, $strict):值是否存在($strict=true 類型也需匹配)。
  • array_search($needle, $haystack, $strict):返回第一個匹配值的鍵名,未找到返回 false。
  • array_keys($array, $search_value, $strict):返回所有匹配值的鍵名數組。
  • array_filter($array, $callback, $flag):回調返回 true 保留。$flag 可傳 ARRAY_FILTER_USE_KEY / ARRAY_FILTER_USE_BOTH。
  • array_unique($array, $sort_flags):去重(保留首次出現的鍵名)。SORT_STRING / SORT_NUMERIC / SORT_REGULAR 控制比較模式。

六、分割、合并、交集、差集

  • array_slice($array, $offset, $length, $preserve_keys):切片(不修改原數組)。
  • array_chunk($array, $size, $preserve_keys):分塊成二維數組(上文多列輸出即用此)。
  • array_merge():合并(數字鍵重排,字符串鍵后覆蓋前)。
  • array_merge_recursive()遞歸合并,相同字符串鍵值合并為數組。
  • array_intersect() / array_diff():交集/差集(比較值,保留第一個數組鍵名)。
  • array_intersect_key() / array_diff_key():按鍵名比較。

七、鍵值轉換

  • array_flip():鍵值互換(值必須唯一且為 int/string)。
  • array_change_key_case($array, CASE_LOWER/UPPER):鍵名大小寫統一。
  • array_combine($keys, $values):兩數組組合為關聯數組。

八、隨機與打亂

  • shuffle():原地打亂(鍵名重排為 0..n)。
  • array_rand($array, $num):隨機取 $num 個鍵名(不取值)。

九、指針控制(較少直接使用,foreach 內部用)

  • current() / key() / next() / prev() / end() / reset() / each()。

十、實戰組合拳

<?php
// 需求:從日志數組中提取唯一 IP,按訪問次數降序,取前 10
$logs = [
    ['ip'=>'1.1.1.1','url'=>'/a'], ['ip'=>'2.2.2.2','url'=>'/b'],
    ['ip'=>'1.1.1.1','url'=>'/c'], ['ip'=>'3.3.3.3','url'=>'/d'],
    ['ip'=>'1.1.1.1','url'=>'/e'],
];
$ips = array_column($logs, 'ip');           // ['1.1.1.1','2.2.2.2','1.1.1.1','3.3.3.3','1.1.1.1']
$counts = array_count_values($ips);         // ['1.1.1.1'=>3, '2.2.2.2'=>1, '3.3.3.3'=>1]
arsort($counts);                            // 保持關聯降序
$top10 = array_slice($counts, 0, 10, true); // 保持鍵名切片
print_r($top10);
?>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved