哈希空间 Ctrl + F 进行搜索
首页 php手册中文版 CSS中文手册 哈希文档 Markdown在线工具

PHP array 组件

array_column

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

array_column返回输入数组中指定列的值

说明

array_column(array $array, int|string|null $column_key, int|string|null $index_key = null): array

array_column() 返回 array 中键名为 column_key 的一列值。 如果指定了可选参数 index_key,则使用输入数组中 index_key 列的值将作为返回数组中对应值的键。

参数

array

多维数组或对象数组,从中提取一列值。 如果提供的是对象数组,只有 public 的属性会被直接取出。 如果想取出 private 和 protected 的属性,类必须实现 __get()__isset() 魔术方法。

column_key

需要返回值的列。它可以是索引数组的列索引,或者是关联数组的列的键,也可以是属性名。 也可以是 null ,此时将返回整个数组(配合 index_key 参数来重新索引数组时非常好用)。

index_key

作为返回数组的索引/键的列。它可以是该列的整数索引,或者字符串键值。 该值会像数组键一样被 强制转换 (但是,在 PHP 8.0.0 之前,也被允许支持转换为字符串对象)。

返回值

返回输入数组中单列值的数组。

更新日志

版本 说明
8.0.0 index_key 参数指定的列中的对象不再强制转换为字符串,而是会抛出 TypeError

范例

示例 #1 从结果集中取出 first_name 列

<?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
(
    [0] => John
    [1] => Sally
    [2] => Jane
    [3] => Peter
)

示例 #2 从结果集中总取出 last_name 列,用相应的“id”作为键值

<?php
// 使用示例 #1 中的 $records 数组
$last_names array_column($records'last_name''id');
print_r($last_names);
?>

以上例程会输出:

Array
(
    [2135] => Doe
    [3245] => Smith
    [5342] => Jones
    [5623] => Doe
)

示例 #3 username 列是从对象获取 public 的 "username" 属性

<?php

class User
{
    public 
$username;

    public function 
__construct(string $username)
    {
        
$this->username $username;
    }
}

$users = [
    new 
User('user 1'),
    new 
User('user 2'),
    new 
User('user 3'),
];

print_r(array_column($users'username'));
?>

以上例程会输出:

Array
(
    [0] => user 1
    [1] => user 2
    [2] => user 3
)

示例 #4 通过 __get() 魔术方法从对象中获取 private 属性的 "name" 列。

<?php

class Person
{
    private 
$name;

    public function 
__construct(string $name)
    {
        
$this->name $name;
    }

    public function 
__get($prop)
    {
        return 
$this->$prop;
    }

    public function 
__isset($prop) : bool
    
{
        return isset(
$this->$prop);
    }
}

$people = [
    new 
Person('Fred'),
    new 
Person('Jane'),
    new 
Person('John'),
];

print_r(array_column($people'name'));
?>

以上例程会输出:

Array
(
    [0] => Fred
    [1] => Jane
    [2] => John
)
如果不提供 __isset(),会返回空数组。
打开 哈希空间 微信小程序中查看更佳