在 PHP 开发中,数组处理几乎每天都会遇到。
尤其是在:
- Laravel 项目开发
- API 接口开发
- 电商系统
- Excel 导入
- 数据统计
- 商品管理后台
这些场景里,经常会需要:
- 提取 ID
- 提取 SKU
- 生成 key-value 映射
- 快速整理接口数据
很多开发者第一反应都是:
foreach
例如:
$ids = [];
foreach ($list as $v) {
$ids[] = $v['id'];
}
这种写法当然没问题。
但其实 PHP 早就内置了一个非常好用的函数:
array_column()
很多人知道它。
但真正了解它高级用法的开发者并不多。
今天就结合实际开发场景,详细聊聊:
- array_column() 是什么
- 为什么它特别实用
- 很多人忽略的第三个参数
- Laravel 中的高频用法
- 实际开发中的坑点
- 什么场景最适合使用
一、array_column() 是什么
基本语法
array_column(数组, 提取字段)
作用:
从二维数组中提取指定列
二、最基础的用法
例如:
$list = [
['id' => 1, 'name' => 'PHP'],
['id' => 2, 'name' => 'Laravel'],
['id' => 3, 'name' => 'MySQL']
];
提取所有 ID:
$ids = array_column($list, 'id');
print_r($ids);
输出:
Array
(
[0] => 1
[1] => 2
[2] => 3
)
三、为什么它比 foreach 更方便?
传统写法:
$ids = [];
foreach ($list as $v) {
$ids[] = $v['id'];
}
而:
array_column($list, 'id');
一行就完成。
对于:
- 提取 ID
- 提取 SKU
- 提取名称
- 提取状态
这种场景特别方便。
四、很多人不知道的高级用法
其实:
array_column()
还有第三个参数。
这也是它最强大的地方之一。
五、第三个参数:自定义 key
例如:
$list = [
['id' => 1001, 'sku' => 'SKU001'],
['id' => 1002, 'sku' => 'SKU002']
];
这样写:
$result = array_column($list, 'sku', 'id');
print_r($result);
输出:
Array
(
[1001] => SKU001
[1002] => SKU002
)
也就是说:
用 id 当 key
用 sku 当 value
六、这个功能在实际开发里特别实用
1、商品 ID 对应 SKU
$skuMap = array_column($products, 'sku', 'id');
生成:
[
1001 => 'SKU001',
1002 => 'SKU002'
]
后面:
$skuMap[$id]
就能直接获取 SKU。
2、用户 ID 对应用户名
$userMap = array_column($users, 'name', 'id');
特别适合:
- ERP 系统
- 商品系统
- 用户系统
- 数据映射
- 下拉框数据
七、Laravel 中的高频场景
例如:
$list = DB::table('product')
->select('id', 'sku')
->get()
->toArray();
很多人第一反应还是:
foreach
其实:
$skuMap = array_column($list, 'sku', 'id');
即可快速生成:
[id => sku]
开发效率会高很多。
八、性能其实也不错
很多开发者觉得:
foreach 更底层
实际上:
array_column()
属于 PHP 内置函数。
通常执行效率并不差。
尤其是:
简单字段提取
这种场景下,代码也会更简洁。
九、开发中的常见坑
1、字段不存在
例如:
array_column($list, 'price');
但数组里没有:
price
结果会返回空数组或空值。
2、对象数组不能直接使用
例如:
$list = Product::get();
很多时候得到的是对象集合。
需要先:
$list = $list->toArray();
否则:
array_column()
可能无法正确提取。
十、Laravel 里还有更优雅的写法
Laravel Collection 提供了:
pluck()
例如:
$skuMap = collect($list)->pluck('sku', 'id')->toArray();
效果类似:
array_column($list, 'sku', 'id');
优点:
- 更符合 Laravel 风格
- 支持链式调用
- 可读性更强
十一、什么时候推荐使用?
推荐使用 array_column 的场景
- 提取 ID
- 提取 SKU
- 提取名称
- 生成 key-value
- 数据映射
不推荐场景
复杂逻辑:
if
continue
break
多层判断
这种更适合:
foreach
十二、实际开发建议
我自己项目里的习惯:
简单字段提取
array_column()
Laravel 数据流处理
pluck()
复杂业务逻辑
foreach
十三、总结
array_column() 是 PHP 中一个非常实用,但很多开发者容易忽略的数组函数。
尤其是第三个参数:
array_column($list, 'value', 'key')
在实际开发中非常高频。
它特别适合:
- ID 映射
- 数据转换
- 字段提取
- key-value 生成
很多原本需要:
10 行 foreach
的代码。
其实:
1 行就能完成
这也是 PHP 内置函数真正强大的地方。
2026-05-16 12:16:16,若文章内容或图片失效,请留言或联系站长反馈!
本文发表于「海知新」,转载请注明出处。本站内容仅用于学习、记录与技术交流,部分资源来源于互联网,如有侵权请联系删除。














暂无评论内容