array_column
是 PHP 中用于提取多维数组中特定列的函数。
它允许您从多维数组中获取指定列的值,形成一个新的一维数组。通常用于处理数据库查询结果或其他多维数据。
array_column(array,column_key,index_key);
- array: 必需 。指定要使用的多维数组(记录集)。
- column_key:必需。要提取的列的键名,可以是字符串或整数。如果是整数,它表示要提取的列的索引。NULL,返回整个数组。
- index_key:可选。用于作为结果数组的键的列的键名。如果未提供,结果数组将使用数字索引。
$arrs = [ ['id'=>1, 'name'=>'judy', 'age'=>20], ['id'=>2, 'name'=>'marry', 'age'=>18], ['id'=>7, 'name'=>'tom', 'age'=>30], ];
$names = array_column($arrs, ‘name’);
print_r($names );
输出:
Array([0]=>'judy', [1]=>'marry', [2]=>'tom')
$names = array_column($arrs, ‘name’, ‘id’);
print_r($names );
输出:
Array([1]=>'judy', [2]=>'marry', [7]=>'tom') //此时返回的键值='id'
php早期版本自定义
/* * 适用于 PHP 5.4 更更早版本的 array_column() 函数 * @param array $input 原始数组 * @param string|integer|null $column_key 键名 * @param string|integer $index_key 原始数组中作为结果数组键名的键名 * @return null|array|false */ if(!function_exists('array_column')) { // array_column ($arrs, NULL, 'name'); function array_column($input, $column_key, $index_key = null) { $arr = array_map(function($d) use ($column_key, $index_key) { $val = null; if (is_null($column_key)) { $val = $d; } else if (isset($d[$column_key])) { $val = $d[$column_key]; } if ($index_key !== null) { return [$d[$index_key] => $val]; } return $d[$column_key]; }, $input); // 剥离最外层数组 if ($index_key !== null) { $tmp = []; foreach ($arr as $ar) { $tmp[key($ar)] = current($ar); } $arr = $tmp; } return $arr; } }