PHP常用数组函数,10个必须掌握

前言

PHP数组函数太多了,记不住?本文整理了10个最常用的数组函数,写代码天天用,必须掌握。

一、array_column — 取数组某一列

用法

$users = [
    ['id' => 1, 'name' => '张三'],
    ['id' => 2, 'name' => '李四'],
    ['id' => 3, 'name' => '王五']
];

$names = array_column($users, 'name');
// 结果:['张三', '李四', '王五']

取列并指定键

$userMap = array_column($users, 'name', 'id');
// 结果:[1 => '张三', 2 => '李四', 3 => '王五']

二、array_map — 遍历处理数组

用法

$numbers = [1, 2, 3, 4, 5];

$squares = array_map(function($n) {
    return $n * $n;
}, $numbers);
// 结果:[1, 4, 9, 16, 25]

实际应用

// 把所有名字转成大写
$names = ['zhang', 'li', 'wang'];
$upperNames = array_map('strtoupper', $names);
// 结果:['ZHANG', 'LI', 'WANG']

三、array_filter — 过滤数组

用法

$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

$even = array_filter($numbers, function($n) {
    return $n % 2 == 0;
});
// 结果:[2, 4, 6, 8, 10]

过滤空值

$arr = ['a', '', 0, null, 'b', '0'];
$result = array_filter($arr);
// 结果:['a', 'b']

四、array_merge — 数组合并

用法

$arr1 = ['a', 'b'];
$arr2 = ['c', 'd'];

$merged = array_merge($arr1, $arr2);
// 结果:['a', 'b', 'c', 'd']

关联数组合并

$arr1 = ['name' => '张三', 'age' => 20];
$arr2 = ['age' => 25, 'city' => '北京'];

$merged = array_merge($arr1, $arr2);
// 结果:['name' => '张三', 'age' => 25, 'city' => '北京']
// 注意:age被后面的覆盖了

五、in_array — 判断值是否在数组里

用法

$fruits = ['apple', 'banana', 'orange'];

if (in_array('apple', $fruits)) {
    echo '有苹果';
}

注意严格模式

$arr = [1, '2', '3'];

in_array(2, $arr); // true(因为类型转换了)
in_array(2, $arr, true); // false(严格模式)

六、array_keys — 取数组的键

用法

$user = ['name' => '张三', 'age' => 20, 'city' => '北京'];

$keys = array_keys($user);
// 结果:['name', 'age', 'city']

找某个值的键

$ages = [
    '张三' => 20,
    '李四' => 25,
    '王五' => 30
];

$keys = array_keys($ages, 25);
// 结果:['李四']

七、array_values — 取数组的值

用法

$user = ['name' => '张三', 'age' => 20, 'city' => '北京'];

$values = array_values($user);
// 结果:['张三', 20, '北京']

八、array_sum — 数组求和

用法

$numbers = [1, 2, 3, 4, 5];

$sum = array_sum($numbers);
// 结果:15

九、count — 统计数组长度

用法

$fruits = ['apple', 'banana', 'orange'];

$count = count($fruits);
// 结果:3

多维数组

$users = [
    ['name' => '张三'],
    ['name' => '李四']
];

count($users); // 2
count($users, COUNT_RECURSIVE); // 4(递归统计)

十、explode / implode — 字符串和数组互转

explode — 字符串转数组

$str = 'apple,banana,orange';

$fruits = explode(',', $str);
// 结果:['apple', 'banana', 'orange']

implode — 数组转字符串

$fruits = ['apple', 'banana', 'orange'];

$str = implode(',', $fruits);
// 结果:'apple,banana,orange'

十一、常用场景

场景1:从数据库取数据,提取某列

$users = Db::name('user')->select();
$names = array_column($users, 'name');

场景2:过滤空值

$list = array_filter($list);

场景3:判断是否存在

if (in_array($userId, $adminIds)) {
    // 是管理员
}

场景4:数组去重后转字符串

$tags = array_unique($tags);
$tagStr = implode(',', $tags);

十二、常见坑

坑1:array_merge关联数组键名覆盖

问题: 相同键名会被覆盖。

解决: 用+号或array_replace。

坑2:in_array类型不严格

问题: in_array(0, ['a', 'b'])返回true。

解决: 加第三个参数true,严格模式。

坑3:count返回0

问题: 传了null进去。

解决: 先判断是不是数组。

总结

10个必须掌握的数组函数:

  1. array_column — 取某一列
  2. array_map — 遍历处理
  3. array_filter — 过滤
  4. array_merge — 合并
  5. in_array — 判断存在
  6. array_keys — 取键
  7. array_values — 取值
  8. array_sum — 求和
  9. count — 统计长度
  10. explode/implode — 字符串数组互转

记住:

  • 天天用的就是这10个
  • 写代码前先想想有没有现成函数
  • 别自己写循环,用内置函数更快

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-9 07:57 

PHP数组常用函数大全,array操作

前言

PHP数组用得最多,几乎每个脚本都要操作数组。本文整理最常用的数组函数,收藏起来随用随查。

一、创建和遍历

数组定义

<?php
// 索引数组
$arr = [1, 2, 3, 4, 5];

// 关联数组
$user = [
    'name' => '张三',
    'age' => 20,
    'email' => 'zhangsan@qq.com'
];

遍历

// foreach遍历
foreach ($arr as $value) {
    echo $value;
}

// 带key
foreach ($user as $key => $value) {
    echo "$key: $value";
}

二、增删改查

添加元素

// 末尾加
$arr[] = 6;
array_push($arr, 7, 8);

// 开头加
array_unshift($arr, 0);

// 关联数组加
$user['phone'] = '13800138000';

删除元素

// 删最后一个
array_pop($arr);

// 删第一个
array_shift($arr);

// 删指定key
unset($user['age']);

// 删多个
unset($arr[0], $arr[1]);

修改元素

$arr[0] = 100;
$user['name'] = '李四';

查找元素

// 值是否在数组里
in_array(3, $arr); // true

// 找key
array_key_exists('name', $user); // true

// 找值的key
array_search(2, $arr); // 1

三、数组统计

长度

count($arr);
sizeof($arr); // 和count一样

求和、最大、最小

array_sum($arr);      // 求和
max($arr);            // 最大
min($arr);            // 最小

去重

$unique = array_unique($arr);

打乱

shuffle($arr);

四、排序

索引数组排序

sort($arr);    // 升序
rsort($arr);   // 降序

关联数组排序

asort($user);  // 按值升序
arsort($user); // 按值降序
ksort($user);  // 按key升序
krsort($user); // 按key降序

五、拆分和合并

取一段

// 从第2个开始取3个
$slice = array_slice($arr, 1, 3);

合并数组

$arr1 = [1, 2];
$arr2 = [3, 4];

$merge = array_merge($arr1, $arr2); // [1,2,3,4]

交差

$arr1 = [1, 2, 3];
$arr2 = [2, 3, 4];

array_intersect($arr1, $arr2); // [2,3] 交集
array_diff($arr1, $arr2);      // [1] 差集

六、key和value操作

取所有key

$keys = array_keys($user);
// ['name', 'age', 'email']

取所有value

$values = array_values($user);
// ['张三', 20, 'zhangsan@qq.com']

翻转key和value

$flipped = array_flip($user);

填充数组

// 5个元素,值都是0
$arr = array_fill(0, 5, 0);

七、数组和字符串互转

数组转字符串

$arr = ['a', 'b', 'c'];
$str = implode(',', $arr); // 'a,b,c'

字符串转数组

$str = 'a,b,c';
$arr = explode(',', $str); // ['a', 'b', 'c']

八、常用场景

场景1:数组去重

$arr = [1, 2, 2, 3, 3, 3];
$unique = array_unique($arr);
// [1, 2, 3]

场景2:查值在不在

$fruits = ['apple', 'banana', 'orange'];

if (in_array('apple', $fruits)) {
    echo '有苹果';
}

场景3:二维数组按key排序

$users = [
    ['name' => '张三', 'age' => 20],
    ['name' => '李四', 'age' => 25],
    ['name' => '王五', 'age' => 18]
];

// 按age排序
array_multisort(array_column($users, 'age'), SORT_ASC, $users);

场景4:数组分页

$page = 1;
$pageSize = 10;
$offset = ($page - 1) * $pageSize;

$pageData = array_slice($allData, $offset, $pageSize);

场景5:过滤空值

$arr = ['a', '', null, 'b', 0, 'c'];
$filtered = array_filter($arr);
// ['a', 'b', 'c'] 空字符串、null、0都被过滤了

九、常见坑

坑1:count(null)报错

PHP7.2以后,count(null)会警告。

解决:

$count = is_array($arr) ? count($arr) : 0;

坑2:==和===的区别

in_array('123', [123]); // true(==)
in_array('123', [123], true); // false(===)

注意: 第三个参数true才是严格比较。

坑3:array_merge和+的区别

$arr1 = ['a' => 1, 'b' => 2];
$arr2 = ['b' => 3, 'c' => 4];

array_merge($arr1, $arr2); // ['a'=>1, 'b'=>3, 'c'=>4]
$arr1 + $arr2;             // ['a'=>1, 'b'=>2, 'c'=>4]

区别: array_merge后者覆盖前者,+前者保留。

坑4:引用传递

foreach ($arr as &$value) {
    $value = $value * 2;
}
unset($value); // 一定要unset,不然后面会出问题

总结

最常用的10个:

  1. count() 数组长度
  2. in_array() 值是否在数组里
  3. array_key_exists() key是否存在
  4. array_unique() 去重
  5. array_merge() 合并
  6. array_slice() 取一段
  7. array_sum() 求和
  8. explode() 字符串转数组
  9. implode() 数组转字符串
  10. array_column() 取二维数组某一列

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-9 07:31 

PHP 数组操作技巧

PHP 数组操作技巧

数组是 PHP 最常用的数据结构,掌握这些技巧,写代码效率翻倍。

1. 数组合并

// 索引数组合并
$arr1 = [1, 2];
$arr2 = [3, 4];
$result = array_merge($arr1, $arr2); // [1,2,3,4]

// 关联数组合并,后面覆盖前面
$arr1 = ['a' => 1, 'b' => 2];
$arr2 = ['b' => 3, 'c' => 4];
$result = array_merge($arr1, $arr2); // ['a'=>1, 'b'=>3, 'c'=>4]

2. 数组去重

// 一维数组去重
$arr = [1, 2, 2, 3, 3, 3];
$result = array_unique($arr); // [1,2,3]

// 二维数组按字段去重
$users = [
    ['id' => 1, 'name' => '张三'],
    ['id' => 2, 'name' => '李四'],
    ['id' => 1, 'name' => '张三'],
];
$ids = array_column($users, 'id');
$unique = array_unique($ids);

3. 数组排序

// 升序
sort($arr);

// 降序
rsort($arr);

// 按键排序
ksort($arr);

// 按值排序,保留键
asort($arr);

4. 数组过滤

// 过滤空值
$arr = [1, 0, '', null, 'a'];
$result = array_filter($arr); // [1, 'a']

// 自定义过滤
$result = array_filter($arr, function($value) {
    return $value > 2;
});

5. 数组取值

// 取某一列
$names = array_column($users, 'name');

// 取交集
$arr1 = [1, 2, 3];
$arr2 = [2, 3, 4];
$result = array_intersect($arr1, $arr2); // [2,3]

// 取差集
$result = array_diff($arr1, $arr2); // [1]

6. 常用技巧

// 判断键是否存在
isset($arr['key']);
array_key_exists('key', $arr);

// 随机取一个
$value = array_rand($arr);

// 打乱数组
shuffle($arr);

// 数组合并成字符串
$str = implode(',', $arr);

// 字符串转数组
$arr = explode(',', $str);

总结

PHP 数组函数非常丰富,常用的就这些:合并、去重、排序、过滤、取值。把这些记熟,日常开发基本够用了。


emer 发布于  2026-10-4 10:48 
'); })();