首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP统一重复数组

PHP统一重复数组
EN

Stack Overflow用户
提问于 2018-06-07 04:21:38
回答 2查看 72关注 0票数 -2

在我PHP代码中,有很多这样的数组:

代码语言:javascript
复制
0 = ['attr_id':1,'name':'qty','value':'100'];
1 = ['attr_id':1,'name':'qty','value':'200'];
2 = ['attr_id':1,'name':'qty','value':'500'];
3 = ['attr_id':2,'name':'price','value':'10$'];

我想像这样合并这个数组:

代码语言:javascript
复制
0 = ['attr_id':1,'name':'qty','value':['100','200','500']];
1 = ['attr_id':1,'name':'price','value':'10$'];

你们能帮帮我吗?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-07 05:11:37

这应该更简单。使用attr_id作为索引构建结果并追加value

代码语言:javascript
复制
foreach($array as $values) {
    $result[$values['attr_id']]['value'][] = $values['value'];
    $result[$values['attr_id']] = $result[$values['attr_id']] + $values;
}

如果需要重新索引,只需在$result上使用array_values()即可。

票数 1
EN

Stack Overflow用户

发布于 2018-06-07 04:37:19

这是一种循环遍历id的array_column数组并使用键插入值数组中的值的方法。

代码语言:javascript
复制
$value = array_column($arr, 'value');
$id = array_column($arr, 'attr_id');
$res =[];

Foreach($id as $key => $i){
    If(!isset($res[$i])) $res[$i] = ['attr_id' => $i, 'name'=>'qty', 'value' => []];
    $res[$i]['value'][] = $value[$key];
}
Var_dump($res);

https://3v4l.org/VXI5E

如您所见,我使用id作为键来跟踪结果数组。

如果您想清除它,意味着从0开始重置计数,请使用array_values。

代码语言:javascript
复制
$res = array_values($res);

编辑:在我的答案中,10$也在数组中,这使得以后在我看来更容易使用该数组。

如果您必须将其保存为字符串,我可以修复它,但以后将数组与混合项一起使用可能会更难。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50728927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档