php foreach 二维数组的问题
本文介绍了php foreach 二维数组的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
数据库中查询出的结果是二维数组,然后foreach后出现以下结果
foreach:
foreach ($users as $k=>$v){
var_dump($v);
}
结果:
array(12) {["id"]=> string(1) "7" ["name"]=> string(9) "小红" ["province"]=> string(6) "四川" ["activation"]=> int(5) ["money"]=> string(5) "25.00" ["count"]=> int(1000) ["total"]=> string(1) "4" ["coltd"]=> string(1) "2" ["station"]=> string(1) "0" ["totalMoney"]=> string(8) "13001.01" }
array(12) { ["id"]=> string(1) "9" ["name"]=> string(9) "蒋磊" ["province"]=> string(6) "浙江" ["activation"]=> int(10) ["money"]=> string(5) "50.00" ["count"]=> int(1000)["total"]=> string(1) "3" ["coltd"]=> string(1) "2" ["station"]=> string(1) "0" ["totalMoney"]=> string(4) "0.51" }
array(12) { ["id"]=> string(1) "3" ["name"]=> string(9) "魏天" ["province"]=> string(6) "天津" ["activation"]=> int(0) ["money"]=> string(4) "0.00" ["count"]=> int(0) ["total"]=> string(1) "4" ["coltd"]=> string(1) "2" ["station"]=> string(1) "2" ["totalMoney"]=> string(4) "0.44" }
array(12) { ["id"]=> string(1) "1" ["name"]=> string(9) "张小明" ["province"]=> string(6) "广东" ["activation"]=> int(1) ["money"]=> string(4) "5.00" ["count"]=> int(1000) ["total"]=> string(1) "1" ["coltd"]=> string(1) "2" ["station"]=> string(1) "0" ["totalMoney"]=> string(4) "0.04" }
array(12) { ["id"]=> string(2) "12" ["name"]=> string(9) "张小明" ["province"]=> string(6) "湖北" ["activation"]=> int(1) ["money"]=> string(4) "5.00" ["count"]=> int(1000) ["total"]=> string(1) "1" ["coltd"]=> string(1) "0" ["station"]=> string(1) "0" ["totalMoney"]=> string(4) "0.04" }
array(12) { ["id"]=> string(2) "26" ["name"]=> string(9) "张小明" ["province"]=> string(6) "北京" ["activation"]=> int(1) ["money"]=> string(4) "5.00" ["count"]=> int(1000) ["total"]=> string(1) "1" ["coltd"]=> string(1) "0" ["station"]=> string(1) "7" ["totalMoney"]=> string(4) "0.04" } }
想得到的结果是:将名字【name】相同的人的对应的值相加,但是总的人数不变【数组的元素个数不变】。[例:张小明的数据, 将三个元素中的["activation"],["money"],["count"],["total"],["totalMoney"]的值相加]
想要得到以下的结果:
array(12) { ["id"]=> string(1) "7" ["name"]=> string(9) "小红" ["province"]=> string(6) "四川" ["activation"]=> int(5) ["money"]=> string(5) "25.00" ["count"]=> int(1000) ["total"]=> string(1) "4" ["coltd"]=> string(1) "2" ["station"]=> string(1) "0" ["totalMoney"]=> string(8) "13001.01" }
array(12) { ["id"]=> string(1) "9" ["name"]=> string(9) "蒋磊" ["province"]=> string(6) "浙江" ["activation"]=> int(10) ["money"]=> string(5) "50.00" ["count"]=> int(1000)["total"]=> string(1) "3" ["coltd"]=> string(1) "2" ["station"]=> string(1) "0" ["totalMoney"]=> string(4) "0.51" }
array(12) { ["id"]=> string(1) "3" ["name"]=> string(9) "魏天" ["province"]=> string(6) "天津" ["activation"]=> int(0) ["money"]=> string(4) "0.00" ["count"]=> int(0) ["total"]=> string(1) "4" ["coltd"]=> string(1) "2" ["station"]=> string(1) "2" ["totalMoney"]=> string(4) "0.44" }
array(12) { ["id"]=> string(1) "1" ["name"]=> string(9) "张小明" ["province"]=> string(6) "广东" ["activation"]=> int(3) ["money"]=> string(4) "15.00" ["count"]=> int(3000) ["total"]=> string(1) "3" ["coltd"]=> string(1) "2" ["station"]=> string(1) "0" ["totalMoney"]=> string(4) "0.12" }
array(12) { ["id"]=> string(2) "12" ["name"]=> string(9) "张小明" ["province"]=> string(6) "湖北" ["activation"]=> int(3) ["money"]=> string(4) "15.00" ["count"]=> int(3000) ["total"]=> string(1) "3" ["coltd"]=> string(1) "0" ["station"]=> string(1) "0" ["totalMoney"]=> string(4) "0.12" }
array(12) { ["id"]=> string(2) "26" ["name"]=> string(9) "张小明" ["province"]=> string(6) "北京" ["activation"]=> int(3) ["money"]=> string(4) "15.00" ["count"]=> int(3000) ["total"]=> string(1) "3" ["coltd"]=> string(1) "0" ["station"]=> string(1) "7" ["totalMoney"]=> string(4) "0.12" } }
解决方案
//数组自己补吧,不想写那么多了
$arr=[['id'=>7,'name'=>'php','activation'=>1,'money'=>10,'province'=>'北京'],
['id'=>1,'name'=>'js','activation'=>12,'money'=>80,'province'=>'广东'],
['id'=>10,'name'=>'js','activation'=>2,'money'=>20,'province'=>'天津']
];
$res=[];
foreach($arr as $k=>$v){
if(isset($res[$v['name']])){
// 自己补剩下字段
$res[$v['name']]['activation']+=$v['activation'];
$res[$v['name']]['money']+=$v['money'];
} else {
$res[$v['name']] = $v;
}
}
foreach($res as $k=>$v){
foreach($arr as $key=>&$value){
if($v['name']==$value['name']){
// 自己补剩下字段
$value['activation']=$v['activation'];
$value['money']=$v['money'];
}
}
}
echo '<pre>';print_r($arr);
Array
(
[0] => Array
(
[id] => 7
[name] => php
[activation] => 1
[money] => 10
[province] => 北京
)
[1] => Array
(
[id] => 1
[name] => js
[activation] => 14
[money] => 100
[province] => 广东
)
[2] => Array
(
[id] => 10
[name] => js
[activation] => 14
[money] => 100
[province] => 天津
)
)
这篇关于php foreach 二维数组的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文