PHP 冷知识:很多人不知道的 array_column() 高级用法

在 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,若文章内容或图片失效,请留言或联系站长反馈!
© 版权声明
THE END
点赞14赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容