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

处理数据库得到的数据为数组有没什么好办法?

  •  
  •   yhmni · 2014-08-19 09:12:22 +08:00 · 3202 次点击
    这是一个创建于 3744 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Example:

    array(2) {
    [0]=>
    array(3) {
    ["id"]=>
    int(31)
    ["name"]=>
    string(3) "abc"
    ["age"]=>
    int(13)
    }
    [1]=>
    array(3) {
    ["id"]=>
    int(32)
    ["name"]=>
    string(3) "def"
    ["age"]=>
    int(14)
    }
    }

    我想让结果成为

    array(2) {
    [31]=>
    array(2) {
    ["name"]=>
    string(3) "abc"
    ["age"]=>
    int(13)
    }
    [32]=>
    array(2) {
    ["name"]=>
    string(3) "def"
    ["age"]=>
    int(14)
    }
    }

    目前除了把结果集foreach处理就没法子了。。。
    12 条回复    2014-08-19 10:04:58 +08:00
    jsjscool
        1
    jsjscool  
       2014-08-19 09:33:11 +08:00
    麻烦把格式整理好了再来提问
    qiayue
        2
    qiayue  
       2014-08-19 09:35:32 +08:00
    用 id 当数组的 key
    我现在就用 foreach
    wangdaimishu
        3
    wangdaimishu  
       2014-08-19 09:35:39 +08:00
    这个时候就能发现框架的好了,Yii2自带的 ArrayHelper 有个方法就是专门处理你的这种需求的。
    yhmni
        4
    yhmni  
    OP
       2014-08-19 09:36:03 +08:00
    @jsjscool 我把带缩进的代码贴进去自动就变这样了,第一次贴代码,见谅
    yhmni
        5
    yhmni  
    OP
       2014-08-19 09:37:48 +08:00
    @wangdaimishu 谢谢,Yii内置的方法核心也是处理返回的结果集么?这种是不是没办法由数据库层面来处理?比如 PDO 的 PDO::FETCH_KEY_PAIR,不过它使用范围太局限了
    anewg
        6
    anewg  
       2014-08-19 09:39:46 +08:00
    同 foreach。@Sunyanzi
    wangdaimishu
        7
    wangdaimishu  
       2014-08-19 09:41:45 +08:00
    @yhmni 不会,不过他的 ActiveRecord 有个 indexBy()的方法让你自己指定如何处理,像你上面的需求,变成代码就是 User::find()->indexBy('id')->all(),然后就出来了
    yhmni
        8
    yhmni  
    OP
       2014-08-19 09:46:17 +08:00
    @wangdaimishu 非常感谢
    dong3580
        9
    dong3580  
       2014-08-19 09:53:07 +08:00
    @qiayue
    foreach好像会打乱顺序吧,貌似不会排序。
    Sunyanzi
        10
    Sunyanzi  
       2014-08-19 09:58:40 +08:00
    附议 @qiayue 与 @anewg ...

    用 foreach 是最容易想到也是效率最高的办法 ...
    jsjscool
        11
    jsjscool  
       2014-08-19 10:03:13 +08:00
    @Sunyanzi 很赞同。一个很简单的问题不要复杂话了。当然楼主有其他要求另议。
    lyragosa
        12
    lyragosa  
       2014-08-19 10:04:58 +08:00
    原来我自己手写了一个函数是多么的愚蠢……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5500 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 05:45 · PVG 13:45 · LAX 21:45 · JFK 00:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.