当前位置:首页>php>PHP数组函数分类整理

PHP数组函数分类整理

  • 2026-09-02 15:34:29
PHP数组函数分类整理

PHP数组函数

PHP7+/PHP8,分为检测、增删、截取、键值、合并拆分、交集差集、排序、回调、转换、其他;
⚠️带&参数代表会修改原数组

1. 数组检测判断

  • • is_array($var):是否为数组 bool
  • • in_array(arr,$strict=false):值是否存在,strict严格匹配 bool
  • • array_key_exists(arr):键是否存在,null值也返回true bool
  • • isset(key]):键存在且值不为null bool
  • • count(mode):统计元素;COUNT_RECURSIVE递归 int
  • • empty($arr):判断是否空数组 bool

2. 增删元素(栈队列,改原数组)

  • • array_push(&v1,:尾部追加,返回新长度;优先用arr[]=$val
  • • array_pop(&$arr):弹出末尾元素,返回弹出值
  • • array_unshift(&v1):头部插入,返回新长度(大数据性能差)
  • • array_shift(&$arr):删除头部元素,返回被删值

3. 截取&替换

array_splice(&offset,replace)

修改原数组,可删除/插入/替换;返回被删除元素数组

array_slice(offset,preserve_keys=false)

只读截取,不修改原数组;preserve_keys=true保留原键

splice:改原数组;slice:只读

4. 键值操作

  • • array_keys(search=null,$strict):获取全部键
  • • array_values($arr):获取全部值,重置数字下标
  • • array_flip($arr):键值互换,重复值后面覆盖前面

5. 合并|拆分

  • • array_merge(...$arrays):合并数组;字符串键后面覆盖前面,数字键重新索引
  • • b:数组相加,键冲突保留前面数组,不重排下标
  • • array_chunk(size,$preserve_keys):数组分块,二维数组分页
  • • array_combine(values):键数组+值数组合成新数组,两个数组长度必须一致

6. 交集差集

  • • array_intersect(b):按【值】求交集,保留a的键
  • • array_intersect_assoc(b):【键+值】同时比较求交集
  • • array_intersect_key(b):只按【键】求交集
  • • array_diff(b):按【值】求差集(a有b没有)
  • • array_diff_assoc(b):【键+值】求差集
  • • array_diff_key(b):只按【键】求差集

7. 排序函数(大多修改原数组,返回bool)

  • • sort(&$arr) 值升序,重置索引
  • • rsort(&$arr) 值降序,重置索引
  • • asort(&$arr) 值升序,保留键(关联数组)
  • • arsort(&$arr) 值降序,保留键
  • • ksort(&$arr) 按键升序
  • • krsort(&$arr) 按键降序
  • • usort(&cb) 自定义值排序,重置索引
  • • uasort(&cb) 自定义值排序,保留键
  • • uksort(&cb) 自定义按键排序
  • • shuffle(&$arr) 随机打乱,重置索引
  • • array_multisort():多维/多字段排序,常配合array_column

回调:fn(b)=>b 升序;a 降序

8. 回调处理

array_map(arr,...)

每个元素执行回调,返回新数组,不修改原数组,支持多数组

array_filter(cb,$mode)

过滤数组,回调true保留元素;不传回调过滤0 '' null false []

  • • ARRAY_FILTER_USE_KEY:回调接收键
  • • ARRAY_FILTER_USE_BOTH:回调接收键+值

array_reduce(cb,$init)

归约折叠数组为单个值;cb(item),carry累计值

array_walk(&cb)

遍历原数组,可以修改原数组元素;cb(key),无返回新数组

array_walk_recursive(cb)

递归多维数组,只遍历叶子元素

map:生成新数组;walk:原地遍历修改

9. 数组与变量字符串转换

  • • compact('k1','k2'):变量组装成关联数组
  • • extract($arr):数组键导出为变量,⚠️安全风险,禁止处理外部数据
  • • implode(arr) / join():数组转字符串
  • • explode(str):字符串切割为数组

10. 其他高频

  • • array_column(col,$index_key):二维数组提取列;index_key指定新数组键
  • • array_unique($arr):数组去重,保留原有键
  • • array_rand(num):随机获取键名
  • • range(end,$step):生成连续数组

高频易错对比

  1. 1. array_merge VS +
    merge:字符串键覆盖,数字键重排; +:冲突保留前面,不重排下标
  2. 2. isset(key]) VS array_key_exists
    isset:键存在且值不为null;array_key_exists:只看键是否存在,不管值
  3. 3. asort/sort
    asort:保留键;sort:丢弃原有键,重置数字索引
  4. 4. array_splice VS array_slice
    splice修改原数组;slice只读截取

开发小提示

  1. 1. 尾部追加优先 val,性能优于array_push
  2. 2. array_unshift/array_shift大数据性能差,尽量避免
  3. 3. 优先array_column代替手写循环提取二维字段
  4. 4. extract禁止接收外部输入数据,防止变量覆盖漏洞

最新文章

随机文章