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;
}
}