【函数分享】每日PHP函数分享(2021-2-5)
2024-08-29 21:19:57
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(),会返回空数组。
最新文章
- MultiThread
- [LeetCode]413 Arithmetic Slices
- poj 1144 Network(无向图求割顶数)
- android之多媒体篇(一)
- AIM Tech Round 3
- SaltStack 最新版WebUI部署
- ASP.NET中POST数据并跳转页面
- ubuntu系统下adb连接手机
- FTP两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)
- LeetCode_Subsets
- VS2008编译boost库
- js系列教程1-数组操作全解
- 微信公众号jssdk自定义分享,二次分享自定义失败解决技巧
- 九、Python+Selenium模拟用QQ登陆腾讯课堂,并提取报名课程(练习)
- 基于Windows服务的WCF
- MySQL高性能优化规范建议,速度收藏
- 【Django简介001】
- SqlServer中循环和条件语句
- MySQL -- 单行函数
- eclipse中项目jdk1.8刷新下就变成1.5的解决办法