您好,匿名用户

php foreach 二维数组的问题

0 投票

数据库中查询出的结果是二维数组,然后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" } }
用户头像 提问 2017年 6月17日 @ Evelynn 下士 (879 威望)
分享到:

1个回答

0 投票

能做,有点麻烦。

但更好的办法是:
通过数据库查询的时候直接计算出所需要的值。
像楼上说的:用group by name
出来后,当然,相同名字的只会出现一行,如果你真的需要多行的话,你可以另外再查询一次:
select id,name from table;
然后循环把两次的结果结合起来处理。

然后:
我还是不明白,什么时候需要把相同名字的求和,又要显示多条数据?

用户头像 回复 2017年 6月17日 @ Viktor 中士 (1,025 威望)
提一个问题:

相关问题

0 投票
1 回复 26 阅读
用户头像 提问 2017年 6月18日 @ Ryze 中士 (1,028 威望)
0 投票
1 回复 19 阅读
0 投票
1 回复 2 阅读
0 投票
1 回复 63 阅读
用户头像 提问 2014年 7月26日 @ Diana 下士 (986 威望)
0 投票
1 回复 46 阅读
用户头像 提问 2016年 5月26日 @ Malzahar 中士 (1,095 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...