PHP 二维数组转一维的问题

2019-09-16 18:31:04 +08:00
 qcgzxw

数据库查询经常遇到要将二维数组转成一维数组的问题,想知道各位大佬是如何优雅的解决的。目前是这样做的

array_column

array_column ( array $input , mixed $column_key [, mixed $index_key = null ] ) : array

array_column() 返回 input 数组中键值为 column_key 的列, 
如果指定了可选参数 index_key,那么 input 数组中的这一列的值将作为返回数组中对应值的键。
<?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', 'id');
print_r($first_names);
?>

以上例程会输出:

Array
(
    [2135] => John
    [3245] => Sally
    [5342] => Jane
    [5623] => Peter
)
4334 次点击
所在节点    PHP
3 条回复
mingmeng
2019-09-16 18:47:28 +08:00
为啥不考虑优化一下查询。。让出来的只有 id firstname 两个字段呀?是上游拿到的数据?
Varobjs
2019-09-16 18:55:46 +08:00
array column
array filter 等等等一大堆函数套着用
经常做同步脚本等功能,数据来源 第三方接口或者数据库。
这已经最优解了,要不你全改 foreach ?或者重写 array* 算法 ,看能不能跑得快点。
dcsite
2019-09-16 22:04:34 +08:00
@mingmeng 人家要的主键是 Key,和查询列关系不大。

不过我也以为这是最优解了,难道还有别人法不成?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/601258

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX