PHP中提供了丰富的数组函数,覆盖了数组的创建、遍历、排序、合并、过滤等核心操作。以下根据官方文档推荐和开发者社区高频使用情况,分类整理常用函数及其功能说明:
一、数组创建与检测
-
array()
用于创建数组,支持索引数组、关联数组和多维数组的初始化。例如$arr = array('a' => 1, 2, 3);
。 -
range()
生成包含指定范围元素的数组,如range(1,5)
生成[1,2,3,4,5]
,支持步长设置range(0,10,2)
。 -
compact()
将变量名和值转换为关联数组,例如compact('var1', 'var2')
。 -
is_array()
检测变量是否为数组,返回布尔值。例如is_array($arr)
。
二、数组遍历与元素处理
-
foreach()
原生循环结构,高效遍历数组键值对。例如foreach($arr as $key => $value)
。 -
array_map()
对数组每个元素应用回调函数,返回新数组。例如array_map('strtoupper', $arr)
。 -
array_walk()
自定义函数处理数组元素(可修改原数组),例如array_walk($arr, function(&$v) { $v *= 2; })
。 -
array_reduce()
通过回调函数迭代将数组减少为单一值,如求和array_reduce($arr, fn($carry, $v) => $carry + $v)
。
三、数组查找与过滤
-
in_array()
判断值是否存在于数组中,返回布尔值。例如in_array('apple', $fruits)
(中小型项目使用频率30~50次)。 -
array_search()
查找值并返回对应键名,如array_search('apple', $fruits)
。 -
array_filter()
使用回调函数过滤数组元素。例如array_filter($arr, fn($v) => $v > 10)
。 -
array_unique()
删除数组中的重复值,保留首次出现的键值对。例如array_unique([1,2,2,3])
。
四、数组排序
-
sort() / rsort()
对索引数组升序/降序排序(重置键名)。例如sort($arr)
。 -
asort() / arsort()
对关联数组按值排序并保持键关联。例如asort($ages)
。 -
ksort() / krsort()
按键名对关联数组排序。例如ksort($userData)
。 -
array_multisort()
对多个数组或多维数组进行排序,如按年龄排序对象数组 。
五、数组合并与分割
-
array_merge()
合并多个数组(覆盖重复键),例如array_merge($arr1, $arr2)
(使用频率3~10次)。 -
array_slice()
提取数组的子集。例如array_slice($arr, 2, 4)
提取从索引2开始的4个元素 。 -
explode() / implode()
字符串与数组互相转换。例如implode(',', $arr)
将数组转为逗号分隔字符串 。 -
array_chunk()
将数组分割为多个子数组。例如array_chunk($arr, 3)
每3个元素一组 。
六、栈与队列操作
-
array_push() / array_pop()
在数组末尾推入/弹出元素,模拟栈结构。例如array_push($stack, 'item')
(使用频率3~10次)。 -
array_unshift() / array_shift()
在数组开头添加/移除元素,模拟队列操作。例如array_shift($queue)
。
七、数组转换与统计
-
array_values() / array_keys()
分别返回数组的值数组和键数组。例如array_keys($user)
获取所有键名 。 -
count() / sizeof()
统计数组元素数量。count($arr)
是首选,sizeof()
为其别名 (高频使用50次以上)。 -
array_sum() / array_product()
计算数组元素的和或乘积。例如array_sum([1,2,3])
返回6 。 -
array_flip()
交换键值对,适用于快速查找键是否存在。例如array_flip(['a'=>1, 'b'=>2])
。
八、高级与性能优化函数
-
array_column()
从多维数组中提取指定列,如array_column($users, 'name')
。 -
array_diff() / array_intersect()
计算数组差集或交集。例如array_diff($arr1, $arr2)
(使用频率1~5次)。 -
array_rand()
随机返回一个或多个键名。例如array_rand($arr, 2)
。
总结
PHP数组函数的设计兼顾灵活性与性能,例如:
- 排序优化:
asort()
在处理大数组时性能优于usort()
,因其采用哈希表算法 。 - 减少遍历:优先使用
array_column()
替代循环提取列数据,提升效率 。 - 动态处理:利用
array_walk()
和array_map()
实现自定义逻辑,避免冗余代码 。
开发者应根据具体场景选择函数,例如高频操作推荐in_array()
和count()
,复杂数据处理可结合array_multisort()
和array_reduce()
。