foreach(explode('|', $s) as $row) {  //用|分割数组,得到0182,1,51 ...等
  $tmp = explode(',', $row);  //把0182,1,51分割成0182 1 51..
  $ar[$tmp[0]][0] += $tmp[1]; // $ar[0182][0] =$ar[0182][0]+1
  $ar[$tmp[0]][1] += $tmp[2]; //$ar[0182][1] = $ar[0182][1]+51

解决方案 »

  1.   

    郁闷。foreach都能用的通的人,还用解释+=吗?我是说请帮助说说这种转换数组的思想,唠叨之前帮别人解决一个问题,我看到了。顺便问下。
      

  2.   

    整个数组再按叠加的逗号分隔的第二个值进行排序。不好意思,我自己都觉得绕口,lz可以将数据简单化,$s = "0182,1,51|0183,96,7280" 这样再一步步调试一下。
      

  3.   

    算法就是将逗号分隔的第一个值作为数组第一维下标($ar['0182']),然后叠加逗号分隔的第二个值($ar['0182'][0])以及第三个值($ar['0182'][1])
    整个数组再按逗号分隔的第二个值($ar['0182'][0])进行排序。-_-#
      

  4.   

    你需要对二维数组的第一列相同的数据项进行求和
    "按第一列找出相同项,去出多余的,再将相同项的后两项分别相加"那么
      $ar[$tmp[0]][0] += $tmp[1]; 
      $ar[$tmp[0]][1] += $tmp[2]; 
    完成的就是这个动作注意,这里利用了数组的关联键总是唯一的这个特性