php 获取数组中指定列,返回数组中指定的一列 - PHP 7 中文文档

(PHP 5 >= 5.5.0, PHP 7)

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

说明

array_column

( array $input

, [mixed](php7/language.pseudo-types) $column_key

[, [mixed](php7/language.pseudo-types) $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

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

返回值

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

更新日志

版本

说明

7.0.0

input 参数现在可以是包含对象的数组。

范例

Example #1 从结果集中取出first names列

// 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

)

Example #2

从结果集中总取出last names列,用相应的id作为键值

// 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

)

Example #3

username 列是从对象获取 public 的 "username" 属性

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

)

Example #4

获取 username 列,从对象通过魔术方法 __get() 获取 private 的 "username" 属性。

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

参见

» Recommended

userland implementation for PHP lower than 5.5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值