PHP数组常用函数有哪些

wen PHP项目 3

本文目录导读:

PHP数组常用函数有哪些

  1. 基础操作(增删改查)
  2. 查找与判断
  3. 排序函数(常用)
  4. 数组合并与切割
  5. 数组运算(集合操作)
  6. 回调函数(高级用法)
  7. 其他常用
  8. PHP 8+ 新特性
  9. 实用技巧
  10. 记忆方法

PHP 提供了非常丰富的数组函数,下面按使用频率功能分类给你整理一份最常用的清单:


基础操作(增删改查)

插入与删除

函数 作用 示例
array_push() 尾部追加一个或多个元素 array_push($arr, 4, 5)
array_pop() 弹出尾部元素(删尾) $last = array_pop($arr)
array_unshift() 头部插入一个或多个元素 array_unshift($arr, 0)
array_shift() 删除头部元素(删头) $first = array_shift($arr)
unset() 删除指定键 unset($arr['key'])

键值操作

函数 作用
array_keys() 返回所有键
array_values() 返回所有值(重新索引)
array_key_exists() 判断键是否存在
isset() 判断键是否存在且值不为null
array_fill_keys() 用指定键和值填充数组
array_flip() 交换键和值

查找与判断

函数 作用
in_array() 值是否存在(松散比较)
array_search() 找到值返回键,否则false
array_key_exists() 键是否存在
array_unique() 去除重复值
array_count_values() 统计每个值出现的次数
$fruits = ['apple', 'banana', 'apple', 'orange'];
print_r(array_count_values($fruits));
// 输出:['apple' => 2, 'banana' => 1, 'orange' => 1]

排序函数(常用)

函数 排序方式 保持键名
sort() 值升序
rsort() 值降序
asort() 值升序
arsort() 值降序
ksort() 键升序
krsort() 键降序
usort() 用户自定义
uasort() 用户自定义
$ages = ['张三' => 25, '李四' => 30, '王五' => 22];
asort($ages);  // 按年龄排序,保留姓名关联
print_r($ages); // ['王五' => 22, '张三' => 25, '李四' => 30]

数组合并与切割

函数 作用
array_merge() 合并一个或多个数组(后面的覆盖前面)
array_merge_recursive() 递归合并,重复键生成子数组
array_combine() 两个数组分别作为键和值
array_slice() 从数组取一段
array_splice() 删除/替换一段,返回被删元素
array_chunk() 分割成多个子数组
$keys = ['a', 'b', 'c'];
$values = [1, 2, 3];
$result = array_combine($keys, $values);
// 输出:['a' => 1, 'b' => 2, 'c' => 3]

数组运算(集合操作)

函数 作用
array_diff() 差集(值对比)
array_diff_key() 差集(键对比)
array_intersect() 交集(值对比)
array_intersect_key() 交集(键对比)
array_sum() 求和
array_product() 求积
$arr1 = [1, 2, 3, 4];
$arr2 = [3, 4, 5, 6];
print_r(array_intersect($arr1, $arr2)); // [3, 4]
print_r(array_diff($arr1, $arr2));      // [1, 2]

回调函数(高级用法)

函数 作用
array_map() 每个元素应用回调,返回新数组
array_filter() 过滤元素(回调返回true保留)
array_reduce() 迭代归约数组为单个值
array_walk() 遍历修改原数组的值
// map:每个数乘2
$arr = [1, 2, 3];
$result = array_map(fn($n) => $n * 2, $arr); // [2, 4, 6]
// filter:取出偶数
$even = array_filter($arr, fn($n) => $n % 2 === 0); // [2]
// reduce:求和
$sum = array_reduce($arr, fn($carry, $n) => $carry + $n, 0); // 6

其他常用

函数 作用
count() / sizeof() 数组长度
implode() 数组转字符串
explode() 字符串转数组
array_rand() 随机取一个或多个键
shuffle() 随机打乱
array_reverse() 反转数组
extract() 将数组键导出为变量
compact() 变量名转为数组
array_column() 提取多维数组某一列

PHP 8+ 新特性

// PHP 8.0+ 新函数
$arr = [1, 2, 3];
// array_is_list() - 判断是否为列表(连续索引)
array_is_list($arr); // true
array_is_list(['a' => 1]); // false
// PHP 8.4+ 新增
array_find($arr, fn($v) => $v > 1);  // 找到第一个匹配元素
array_any($arr, fn($v) => $v > 5);   // 是否任一匹配
array_all($arr, fn($v) => $v > 0);   // 是否全部匹配

实用技巧

去除关联数组中的指定键

$data = ['name' => 'Alice', 'age' => 30, 'email' => 'a@b.com'];
$filtered = array_diff_key($data, array_flip(['email']));

两个数组交叉比较(订单交集)

$cart = ['item1', 'item2', 'item3'];
$inventory = ['item2', 'item3', 'item4'];
$available = array_intersect($cart, $inventory);

数组转查询字符串

$params = ['name' => 'Alice', 'age' => 30];
$query = http_build_query($params); // "name=Alice&age=30"

记忆方法

增删: push/pop/unshift/shift 查: in_array/array_search/key_exists 排序: sort/asort/ksort + r(反向) 合并: merge/combine/slice/chunk 集合: diff/intersect/sum 回调: map/filter/reduce

如果做开发的话,建议把 array_maparray_filterarray_reduce 这三个掌握熟练,它们是函数式编程的基石,能让代码简洁很多。

抱歉,评论功能暂时关闭!