php数组(十五) array_column
array_column — 返回输入数组中指定列的值
array_column(array
$array
, int|string|null $column_key
, int|string|null $index_key
= null
): arrayarray_column() 返回 array
中键名为 column_key
的一列值。 如果指定了可选参数 index_key
,则使用输入数组中 index_key
列的值将作为返回数组中对应值的键。
参数
array
- 多维数组或对象数组,从中提取一列值。 如果提供的是对象数组,只有 public 的属性会被直接取出。 如果想取出 private 和 protected 的属性,类必须实现 __get() 和 __isset() 魔术方法。
column_key
- 需要返回值的列。它可以是索引数组的列索引,或者是关联数组的列的键,也可以是属性名。 也可以是
null
,此时将返回整个数组(配合index_key
参数来重新索引数组时非常好用)。
index_key
- 作为返回数组的索引/键的列。它可以是该列的整数索引,或者字符串键值。 该值会像数组键一样被 强制转换(但是,在 PHP 8.0.0 之前,也被允许支持转换为字符串对象)。
1、username 列是从对象获取 public 的 "username" 属性
1 | <?php<br><br> class User<br>{<br> public $username ;<br><br> public function __construct(string $username )<br> {<br> $this ->username = $username ;<br> }<br>}<br><br> $users = [<br> new User( 'user 1' ),<br> new User( 'user 2' ),<br> new User( 'user 3' ),<br>];<br><br>print_r(array_column( $users , 'username' ));<br>?> |
输出:
1 2 3 4 5 6 | Array ( [0] => user 1 [1] => user 2 [2] => user 3 ) |
2、返回某一列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php // 表示从数据库返回的记录集的数组 $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 ); ?> |
输出:
1 2 3 4 5 6 7 | Array ( [0] => John [1] => Sally [2] => Jane [3] => Peter ) |
3、从结果集中总取出 last_name 列,用相应的“id”作为键值
1 2 3 4 5 | <?php // 使用示例 #1 中的 $records 数组 $last_names = array_column( $records , 'last_name' , 'id' ); print_r( $last_names ); ?> |
输出:
1 2 3 4 5 6 7 | Array ( [2135] => Doe [3245] => Smith [5342] => Jones [5623] => Doe ) |
4、以数组某一列为key,值为value
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php $arr = array ( array ( 'id' => 2135, 'first_name' => 'John' , 'last_name' => 'Doe' , ), array ( 'id' => 3245, 'first_name' => 'Sally' , 'last_name' => 'Smith' , ) ); $ret = array_column( $arr , null, 'id' ); print_r( $ret ); ?> |
返回:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Array ( [2135] => Array ( [id] => 2135 [first_name] => John [last_name] => Doe ) [3245] => Array ( [id] => 3245 [first_name] => Sally [last_name] => Smith ) ) |
5、键和值也可以是索引,示例 以索引0为key, 索引1位值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php $arr = array ( array ( 0 => 2135, 1 => 'John' , 2 => 'Doe' , ), array ( 0 => 3245, 1 => 'Sally' , 2 => 'Smith' , ) ); $ret = array_column( $arr , 1, 0); print_r( $ret ); ?> |
输出:
1 2 3 4 5 | Array ( [2135] => John [3245] => Sally ) |
posted on 2021-08-06 17:52 1450811640 阅读(87) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~