php把三维数组中在第二层的条件下,把第三层的有相同字段的合并成一个,把其中一个字段的值相加

查看:85
本文介绍了php把三维数组中在第二层的条件下,把第三层的有相同字段的合并成一个,把其中一个字段的值相加的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

php把三维数组中在第二层的条件下,把第三层的有相同字段的合并成一个,把其中一个字段的值相加!

2 =>

array (size=4)
0 =>

array (size=5)
  'id' => string '1' (length=1)
  'username' => string 'ppp' (length=3)
  'pid' => string '2' (length=1)
  'turns' => string '100' (length=3)
  'use_time' => string '20161227' (length=8)

1 =>

array (size=5)
  'id' => string '2' (length=1)
  'username' => string 'ppp' (length=3)
  'pid' => string '2' (length=1)
  'turns' => string '68' (length=2)
  'use_time' => string '20161228' (length=8)

2 =>

array (size=5)
  'id' => string '5' (length=1)
  'username' => string 'ppp' (length=3)
  'pid' => string '2' (length=1)
  'turns' => string '10' (length=2)
  'use_time' => string '20161227' (length=8)

3 =>

array (size=5)
  'id' => string '6' (length=1)
  'username' => string 'ppp' (length=3)
  'pid' => string '2' (length=1)
  'turns' => string '20' (length=2)
  'use_time' => string '20161226' (length=8)

1 =>

array (size=1)
0 =>

array (size=5)
  'id' => string '7' (length=1)
  'username' => string 'ppp' (length=3)
  'pid' => string '1' (length=1)
  'turns' => string '30' (length=2)
  'use_time' => string '20161227' (length=8)
  

解决方案

$arr=[
    2=>[
    ['id'=>1,'user_time'=>'20161228','pid'=>2,'turns'=>1],
    ['id'=>2,'user_time'=>'20161227','pid'=>2,'turns'=>1],
    ['id'=>3,'user_time'=>'20161228','pid'=>2,'turns'=>10],
    ],
    1=>[
        ['id'=>1,'user_time'=>'20161228','pid'=>1,'turns'=>10],
        ['id'=>2,'user_time'=>'20161227','pid'=>1,'turns'=>1],
        ['id'=>3,'user_time'=>'20161227','pid'=>1,'turns'=>10],
        ],
    ];

$result=[];
foreach($arr as $k=>$v){
    $res=[];
    foreach($v as $key=>$value){
        if(isset($res[$value['user_time']])){
            $res[$value['user_time']]['turns']+=$value['turns'];
        }else{
            $res[$value['user_time']]=$value;
        }
    }
    $result[$k]=array_values($res);
}    
print_r($result);
[
    2 => [
        [
            "id"        => 1,
            "user_time" => "20161228",
            "pid"       => 2,
            "turns"     => 11
        ],
        [
            "id"        => 2,
            "user_time" => "20161227",
            "pid"       => 2,
            "turns"     => 1
        ]
    ],
    1 => [
        [
            "id"        => 1,
            "user_time" => "20161228",
            "pid"       => 1,
            "turns"     => 10
        ],
        [
            "id"        => 2,
            "user_time" => "20161227",
            "pid"       => 1,
            "turns"     => 11
        ]
    ]
]

这篇关于php把三维数组中在第二层的条件下,把第三层的有相同字段的合并成一个,把其中一个字段的值相加的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆