array_column可直接从二维数组或对象数组中提取指定列生成一维数组;支持PHP 5.5+,7.0+兼容对象,8.0+支持传null获取键名列表;需注意键唯一性、属性可见性及数据类型统一。
直接用 array_column 就能从二维数组中抽一列出来变成一维数组,不用写循环。它原生支持 PHP 5.5+,PHP 7.0+ 还能传对象数组。
常见写法:array_column($array, 'key_name') —— 第二个参数是你要提取的键名(字符串),返回所有子数组里该键对应的值组成的索引数组。
'id'、'name' 这类键名直接填进去就行0,不是 '0'
NULL,不会跳过也不会报错默认返回的是纯数值索引数组,但有时你需要用某列做键、另一列做值,比如把 ['id' => 1, 'name' => 'Tom'] 转成 [1 => 'Tom'],这时候得用第三个参数:
array_column($array, 'name', 'id') —— 第二个参数是「值」,第三个是「键」。顺序不能反,反了就全变成 NULL 或空数组。
null 作为第二个参数,只提取键不取值,得到一个键名列表传对象数组进去时,array_column 默认按 public 属性取值,不支持 protected/p

->name,就得有 public $name;
__get() 动态提供的,array_column 拿不到,得先用 array_map 转成关联数组再操作PHP array_column,或者你想在提取同时做类型转换、过滤、默认值填充,就得手动遍历。
最简等效写法:
$result = [];
foreach ($array as $item) {
$result[] = $item['name'] ?? null;
}
?? 可避免 Notice: Undefined index
$result[$item['id']] = $item['name'] ?? '';
array_map + 匿名函数也行,但可读性不如 foreach,且无法优雅处理缺失键array_column 返回空数组却查不出错的高频原因。