在日常 PHP 开发中,处理多维数组是非常常见的需求。例如,从数据库查询结果中提取某一列数据,或整理接口返回的嵌套数组等。array_column() 函数正是为此而生——它能用极简的代码从多维数组中提取单列值,极大简化数组操作逻辑。一、array_column() 函数简介
1. 函数作用
array_column() 是 PHP 5.5.0 及以上版本内置的数组函数。它的核心功能是:2. 语法结构
array_column(array $array, int|string|null $column_key, int|string|null $index_key = null): array
- $column_key(必需):要提取的列的键名(字符串/数字),传 null 时返回整个数组(PHP7.0+ 支持)
- $index_key(可选):用数组中某一列的值作为返回数组的键名,让结果数组更易按键取值
二、array_column() 基础实战实例
1. 提取多维数组的单列值
// 模拟数据库查询返回的多维数组$users = [ ['id' => 1, 'name' => '张三', 'age' => 22 ], ['id' => 2, 'name' => '李四', 'age' => 25 ], ['id' => 3, 'name' => '王五', 'age' => 28],];// 提取所有用户的姓名列$userNames = array_column($users, 'name');print_r($userNames);
Array ( [0] => 张三 [1] => 李四 [2] => 王五 )
三、array_column() 在 ThinkPHP6 中的应用
ThinkPHP6 是国内主流的 PHP 框架,数据库查询(Db 类/模型)返回的结果集多为数组或对象数组,array_column() 能极大简化数据处理。1. 从模型查询结果中提取单列值
$orderList = Order::where('user_id', 1)->select()->toArray();$orderIds = array_column($orderList, 'id');
2. 提取数据并定义键名,用于关联查询
$userList = User::select()->toArray();$userIds = array_column($userList, 'id');$orderList = Order::whereIn('user_id', $userIds)->select()->toArray();$orderData = array_column($orderList, null, 'user_id');foreach($userList as $key => $user) { $user['has_order'] = (bool) ($orderData[$user['id']] ?? null);}
3. 处理 Db 类查询的结果集
$userList = Db::name('user')->select();$userIds = array_column($userList, 'id');$orderList = Db::name('order')->whereIn('user_id', $userIds)->select();$orderData = array_column($orderList, null, 'user_id');foreach($userList as $key => $user) { $user['has_order'] = (bool) ($orderData[$user['id']] ?? null);}