dsegw3424 2017-06-06 14:03
浏览 61
已采纳

Foreach循环可以抑制重复但添加值

Hope someone can help.

I have this array (this is a only a snippet as there is loads of lines). I have been trying to do this myself today.

array(628) {
  [0]=>
  array(3) {
    [0]=>
    string(7) "User 1"
    [1]=>
    string(2) "10"
    [2]=>
    string(2) "10"
  }
  [1]=>
  array(3) {
    [0]=>
    string(10) "User 2"
    [1]=>
    string(2) "10"
    [2]=>
    string(2) "10"
  }
  [2]=>
  array(3) {
    [0]=>
    string(9) "User 1"
    [1]=>
    string(2) "10"
    [2]=>
    string(1) "8"
  }
  [3]=>
  array(3) {
    [0]=>
    string(7) "User 3"
    [1]=>
    string(2) "10"
    [2]=>
    string(1) "8"
  }
  [4]=>
  array(3) {
    [0]=>
    string(10) "User 3"
    [1]=>
    string(2) "10"
    [2]=>
    string(2) "10"
  }
  [5]=>
  array(3) {
    [0]=>
    string(9) "User 4"
    [1]=>
    string(2) "10"
    [2]=>
    string(2) "10"
  }
  [6]=>
  array(3) {
    [0]=>
    string(6) "User 1"
    [1]=>
    string(2) "10"
    [2]=>
    string(1) "9"
  }
  [7]=>
  array(3) {
    [0]=>
    string(9) "User 5"
    [1]=>
    string(2) "10"
    [2]=>
    string(2) "10"
  }
  [8]=>
  array(3) {
    [0]=>
    string(9) "User 3"
    [1]=>
    string(2) "10"
    [2]=>
    string(2) "10"
  }
  [9]=>
  array(3) {
    [0]=>
    string(7) "User 1"
    [1]=>
    string(2) "10"
    [2]=>
    string(2) "10"
  }
  [10]=>
  array(3) {
    [0]=>
    string(9) "User 5"
    [1]=>
    string(1) "0"
    [2]=>
    string(1) "0"
  }

As you can see there is duplicate "Users" they wont be called User #. I would like any duplicates gone but the values of [1] added togather and also values of [2] added together also.

Hope that information helps

Thanks

  [0]=>
  array(3) {
    [0]=>
    string(7) "User 1"
    [1]=>
    string(2) "40"
    [2]=>
    string(2) "37"
  }
  [1]=>
  array(3) {
    [0]=>
    string(10) "User 2"
    [1]=>
    string(2) "10"
    [2]=>
    string(2) "10"
  }
  [2]=>
  array(3) {
    [0]=>
    string(7) "User 3"
    [1]=>
    string(2) "40"
    [2]=>
    string(1) "38"
   }
  [3]=>
  array(3) {
    [0]=>
    string(9) "User 5"
    [1]=>
    string(2) "10"
    [2]=>
    string(2) "10"
  }

</div>
  • 写回答

1条回答 默认 最新

  • dousi1994 2017-06-06 15:17
    关注

    Try this:

    $arr = array ( 0 => array ('User 1', 10, 10),
                    1 => array ('User 2', 10, 10),
                    2 => array ('User 1', 10, 10),
                    3 => array ('User 2', 10, 10),
                    4 => array ('User 1', 10, 10),
                    5 => array ('User 3', 10, 10),
    ); 
    $result = array();
    
    foreach($arr as $val){
        $key = array_search($val[0], array_column($result, 0));
        if($key !== false){
            $result[$key][1] = $result[$key][1] + $val[1];
            $result[$key][2] = $result[$key][2] + $val[2];
        }else{
            $result[] = $val;
        }
    }
    echo "<pre>";print_r($result);
    

    Code Snippet

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?