php怎样用array_column二维转一维_phparray_column指定列转一维【步骤】
发布时间 - 2026-01-25 00:00:00 点击率:次array_column可直接从二维数组或对象数组中提取指定列生成一维数组;支持PHP 5.5+,7.0+兼容对象,8.0+支持传null获取键名列表;需注意键唯一性、属性可见性及数据类型统一。
array_column 提取指定列生成一维数组
直接用 array_column 就能从二维数组中抽一列出来变成一维数组,不用写循环。它原生支持 PHP 5.5+,PHP 7.0+ 还能传对象数组。
常见写法:array_column($array, 'key_name') —— 第二个参数是你要提取的键名(字符串),返回所有子数组里该键对应的值组成的索引数组。
- 如果二维数组是关联形式(比如数据库查询结果),
'id'、'name'这类键名直接填进去就行 - 如果想提取数字索引列(比如第 0 列),第二个参数填
0,不是'0' - 如果某行缺失该键,对应位置会是
NULL,不会跳过也不会报错
带索引键的 array_column:

默认返回的是纯数值索引数组,但有时你需要用某列做键、另一列做值,比如把 ['id' => 1, 'name' => 'Tom'] 转成 [1 => 'Tom'],这时候得用第三个参数:
array_column($array, 'name', 'id') —— 第二个参数是「值」,第三个是「键」。顺序不能反,反了就全变成 NULL 或空数组。
- 第三个参数的值必须唯一,否则后出现的会覆盖前面的
- 如果某个子数组没有第三个参数指定的键,那一行会被整个忽略(不报错,也不留空位)
- PHP 8.0+ 支持传
null作为第二个参数,只提取键不取值,得到一个键名列表
array_column 处理对象数组的注意事项
传对象数组进去时,array_column 默认按 public 属性取值,不支持 protected/private,也不能自动调用 getter 方法。
- 对象必须有对应名称的 public 属性,比如要取
->name,就得有public $name; - 如果属性是通过
__get()动态提供的,array_column拿不到,得先用array_map转成关联数组再操作 - 混用对象和数组的二维结构会导致部分元素失效,建议统一数据类型再处理
替代方案:兼容低版本 PHP 或复杂逻辑时怎么绕过 array_column
PHP array_column,或者你想在提取同时做类型转换、过滤、默认值填充,就得手动遍历。
最简等效写法:
$result = [];
foreach ($array as $item) {
$result[] = $item['name'] ?? null;
}
- 用
??可避免Notice: Undefined index - 如果要保留原始键(比如数据库里的主键 ID),改用
$result[$item['id']] = $item['name'] ?? ''; -
array_map+ 匿名函数也行,但可读性不如 foreach,且无法优雅处理缺失键
array_column 返回空数组却查不出错的高频原因。
# php
# 数据类型
# Array
# NULL
# 关联数组
# foreach
# 字符串
# 循环
# public
# private
# protected
# 类型转换
# undefined
# 对象
# 数据库
# 第三个
# 第二个
# 键名
# 就得
# 报错
# 转成
# 的是
# 组中
# 也不
# 就能
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何基于云服务器快速搭建网站及云盘系统?
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
Linux系统命令中screen命令详解
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
如何在万网自助建站平台快速创建网站?
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
JavaScript如何实现倒计时_时间函数如何精确控制
在线教育网站制作平台,山西立德教育官网?
香港服务器选型指南:免备案配置与高效建站方案解析
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
如何在IIS中新建站点并配置端口与物理路径?
高防服务器如何保障网站安全无虞?
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
油猴 教程,油猴搜脚本为什么会网页无法显示?
googleplay官方入口在哪里_Google Play官方商店快速入口指南
网易LOFTER官网链接 老福特网页版登录地址
如何在Windows服务器上快速搭建网站?
HTML 中动态设置元素 name 属性的正确语法详解
个人摄影网站制作流程,摄影爱好者都去什么网站?
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
Python文件流缓冲机制_IO性能解析【教程】
原生JS获取元素集合的子元素宽度实例
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
魔方云NAT建站如何实现端口转发?
Internet Explorer官网直接进入 IE浏览器在线体验版网址
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
jQuery validate插件功能与用法详解
海南网站制作公司有哪些,海口网是哪家的?
浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】
java中使用zxing批量生成二维码立牌
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
Laravel如何处理和验证JSON类型的数据库字段
实例解析Array和String方法
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
如何在橙子建站中快速调整背景颜色?
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
WEB开发之注册页面验证码倒计时代码的实现
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
如何在香港免费服务器上快速搭建网站?
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】

