php数组(十五) array_column

array_column — 返回输入数组中指定列的值

 

array_column(array $arrayint|string|null $column_keyint|string|null $index_key = null): array

array_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   1450811640  阅读(87)  评论(0编辑  收藏  举报

编辑推荐:
· 从 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的设计差异
· 三行代码完成国际化适配,妙~啊~
< 2025年3月 >
23 24 25 26 27 28 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 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示