V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qcgzxw
V2EX  ›  PHP

PHP 二维数组转一维的问题

  •  
  •   qcgzxw · 2019-09-16 18:31:04 +08:00 · 4317 次点击
    这是一个创建于 1655 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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
    )
    
    3 条回复    2019-09-16 22:04:34 +08:00
    mingmeng
        1
    mingmeng  
       2019-09-16 18:47:28 +08:00 via Android
    为啥不考虑优化一下查询。。让出来的只有 id firstname 两个字段呀?是上游拿到的数据?
    Varobjs
        2
    Varobjs  
       2019-09-16 18:55:46 +08:00 via Android
    array column
    array filter 等等等一大堆函数套着用
    经常做同步脚本等功能,数据来源 第三方接口或者数据库。
    这已经最优解了,要不你全改 foreach ?或者重写 array* 算法 ,看能不能跑得快点。
    dcsite
        3
    dcsite  
       2019-09-16 22:04:34 +08:00
    @mingmeng 人家要的主键是 Key,和查询列关系不大。

    不过我也以为这是最优解了,难道还有别人法不成?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3325 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 13:44 · PVG 21:44 · LAX 06:44 · JFK 09:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.