PHP 中的数组可以说是其最闪亮的语言特性之一,围绕数组操作,PHP 提供了数十个相关函数,今天本文介绍的 array_column 函数是这些函数中的小弟弟,首次出现于 PHP 5.5 中,它的作用是返回数组中指定列的所有值,如果不理解字面的解释,那我们看下面一段代码,$records 变量表示的是一个与数据库记录集对应的数组,数组中的每一项代表一条记录,每条记录包含三个字段(列):idfirst_namelast_name,如果我们想获得所有 first_name 字段(列)的值,在 PHP 5.5 之前,我们要用 foreach 语句或 array_walkarray_map 等函数来自编码实现,但自 PHP 5.5 起,我们只需简单调用 array_column 函数即可:

<?php
// 数组表示数据库返回的记录集
$records = array(
    array(
        'id' => 2135,
        'first_name' => 'John',
        'last_name' => 'Doe',
    ),
    array(
        'id' => 3245,
        'first_name' => 'Sally',
        'last_name' => 'Smith',
    ),
    array(
        'id' => 5342,
        'first_name' => 'Jane',
        'last_name' => 'Jones',
    ),
    array(
        'id' => 5623,
        'first_name' => 'Peter',
        'last_name' => 'Doe',
    )
);
 
$first_names = array_column($records, 'first_name');

print_r($first_names);
?>

array_column 函数声明如下:

array array_column ( array $array , mixed $column_key [, mixed $index_key = null ] )

第一个参数是要操作的数组,第二个参数是要返回的字段(列)的键名,可选的第三个参数指定其值用作索引键的字段(列)名。

比如,在上面的例子中,输出结果如下:

Array
(
    [0] => John
    [1] => Sally
    [2] => Jane
    [3] => Peter
)

如果想指定 id 字段(列)的值作为返回数组的索引键,那么指定第三个参数为 id 即可:

<?php
// 使用上例中的记录数组
$first_names = array_column($records, 'first_name', 'id');
print_r($first_names);
?> 

输出结果如下:

Array
(
    [2135] => John
    [3245] => Sally
    [5342] => Jane
    [5623] => Peter
)