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