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

最新文章

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

热门文章

  1. 在php里做js操作
  2. spring cache 学习 —— @Cacheable 使用详解
  3. PHP SDK短信接口
  4. LeetCode841 钥匙和房间
  5. 剑指offer 面试题5:替换空格
  6. python学习笔记 | macOS Big Sur动态壁纸食用指南
  7. Linux 中软链接和硬链接的使用
  8. CVE-2019-15107_webmin漏洞复现
  9. 【Linux】Linux介绍和安装 - 测试题
  10. PAT Advanced 1007 Maximum Subsequence Sum