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

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

用 foreach 是最容易想到也是效率最高的办法 ...
jsjscool
2014-08-19 10:03:13 +08:00
@Sunyanzi 很赞同。一个很简单的问题不要复杂话了。当然楼主有其他要求另议。
lyragosa
2014-08-19 10:04:58 +08:00
原来我自己手写了一个函数是多么的愚蠢……

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

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

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

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

© 2021 V2EX