【函数分享】每日PHP函数分享(2021-2-5)

array_column — 返回数组中指定的一列

说明:

array_column ( array $input , mixed $column_key , mixed $index_key = null ) : array

array_column() 返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。

参数:

input:需要取出数组列的多维数组。如果提供的是包含一组对象的数组,只有 public 属性会被直接取出。为了也能取出 private 和 protected 属性,类必须实现 __get() 和 __isset() 魔术方法。

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

index_key:作为返回数组的索引/键的列,它可以是该列的整数索引,或者字符串键值。

返回值:

从多维数组中返回单列数组。

范例:

范例1

<?php
// Array representing a possible record set returned from a database
$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:

<?php
// Using the $records array from Example #1
$last_names = array_column($records, 'last_name', 'id');
print_r($last_names);
?>

输出:

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

范例3:

<?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:

<?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(),会返回空数组。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容