【函数分享】每日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(),会返回空数组。