array_column 是 PHP 5.5+ 提供的内置函数,用于从二维数组中提取指定列的值;支持按字段名取值、用某字段作键名映射、或传 null 获取完整子数组并重排键名,但不支持多维嵌套且键名区分大小写。

array_column 是 PHP 5.5+ 提供的内置函数,专门用于从二维数组(或对象数组)中提取某一列的值,用法简洁高效。
基本语法和最常用形式
提取指定键名的所有值,返回一维索引数组:
array_column($array, $column_key, $index_key = null)
- $array:待处理的二维数组(如数据库查询结果、JSON 解析后的数组)
- $column_key:要提取的字段名(字符串),例如 'name'、'id';也可传 null,此时返回整行子数组
-
$index_key(可选):用作新数组键名的字段名,比如用 'id' 当键,让结果变成
[1 => '张三', 2 => '李四']
提取单个字段值(最常见场景)
比如有用户数据:
$users = [
['id' => 1, 'name' => '张三', 'age' => 25],
['id' => 2, 'name' => '李四', 'age' => 30],
['id' => 3, 'name' => '王五', 'age' => 28]
];
只取所有用户名:
立即学习“PHP免费学习笔记(深入)”;
$names = array_column($users, 'name'); // 结果:['张三', '李四', '王五']
用某字段做键名,实现映射关系
想以 id 为键、name 为值快速查找:
$name_map = array_column($users, 'name', 'id'); // 结果:[1 => '张三', 2 => '李四', 3 => '王五']
之后可直接 $name_map[2] 获取 '李四',比循环查找更高效。
配合 null 提取完整子数组(按条件重组)
当 $column_key 为 null,函数返回原数组副本(保留结构),但可用 $index_key 重排键名:
$indexed_by_id = array_column($users, null, 'id'); // 结果:[1 => ['id'=>1,'name'=>'张三',...], 2 => [...], 3 => [...]]
这在需要按主键快速索引整个记录时很实用。
注意事项
- 如果指定的
$column_key在某些子数组中不存在,对应位置返回 null(PHP 7.4+ 可设默认值,但需配合array_filter或手动处理) - 不支持多维嵌套(如
$row['profile']['email']),需先扁平化或用array_map+ 匿名函数 - 关联键名区分大小写,确保字段名拼写一致



















