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;

    }

}

作者 admin

百度广告效果展示