php 中如何将数字索引数组改为键名索引数组

2016-07-21 16:18:29 +08:00
 ragnaroks
Array
(
[0] => stdClass Object
(
[id] => 1
[k] => AppName
[v] => 我是应用名称
[notes] => 应用名称
)
[1] => stdClass Object
(
[id] => 2
[k] => AppDescription
[v] => 我是应用描述
[notes] => 应用描述
)
[2] => stdClass Object
(
[id] => 3
[k] => AppVersion
[v] => 0.0.1
[notes] => 应用版本
)
)

如何变为下面这种:

Array
(
[AppName] => stdClass Object
(
[id] => 1
[k] => AppName
[v] => 我是应用名称
[notes] => 应用名称
)
[AppDescription] => stdClass Object
(
[id] => 2
[k] => AppDescription
[v] => 我是应用描述
[notes] => 应用描述
)
[AppVersion] => stdClass Object
(
[id] => 3
[k] => AppVersion
[v] => 0.0.1
[notes] => 应用版本
)
)
请大神赐教
5672 次点击
所在节点    PHP
13 条回复
imn1
2016-07-21 16:32:58 +08:00
10+年没写 PHP 了,我记得有个函数可以用 array A 和 array B 各自的值配对成新数组的
5dkgansm
2016-07-21 16:35:06 +08:00
$newarr = array_combine($arr1,explode(',','AppName,AppDescription,AppVersion'));
qiayue
2016-07-21 16:35:07 +08:00
最简单最容易想的方法是循环一下,因为你这个场景数据长度不会太长,循环不会太耗时
5dkgansm
2016-07-21 16:36:17 +08:00
参数写反了,很久没用,无视吧
ragnaroks
2016-07-21 16:36:37 +08:00
@qiayue
很不幸,我这个只是示例数据,原始数据是数据库内 N 行数据,但希望以某个字段名作为结果索引.
5dkgansm
2016-07-21 16:38:10 +08:00
array_column 和 array_combine 组合用效果很好 @ragnaroks
qiayue
2016-07-21 16:38:17 +08:00
function arr2map($arr){
$m = array();
foreach($arr as $o){
$m[$o->k] = $o;
}
return $m;
}
qiayue
2016-07-21 16:39:28 +08:00
6 楼的方法好
ragnaroks
2016-07-21 16:49:44 +08:00
@5dkgansm
虽然很麻烦,但是精准解决问题了
techmoe
2016-07-21 17:54:29 +08:00
别的都好说,没想通数组怎么转 stdClass Object
难道说写个 class 然后拿构造函数绑属性上去吗。。
jhdxr
2016-07-21 17:56:53 +08:00
@techmoe json_decode(json_encode($arr))
sarike
2016-07-21 18:05:38 +08:00
@techmoe (object)$arr
junyuecao
2016-07-22 09:27:50 +08:00
我是来试一下头像的

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

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

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

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

© 2021 V2EX