三维数组的数据处理问题,求大佬来

_IronBear 2018-01-23 03:37:31
array(8) {
[0] => array(2) {
[0] => array(14) {
["danName"] => string(6) "甲烷"
["standard"] => string(3) "CH4"
["danCate"] => string(15) "易燃性气体"
["price"] => string(5) "10.00"
["unit"] => string(9) "立方米"
["stock"] => int(5)
["id"] => int(41)
["date"] => string(19) "2018-01-12 11:16:23"
["operator"] => string(5) "admin"
["remark"] => string(18) "甲烷领用测试"
["borrower"] => string(5) "aut77"
["num"] => int(5)
["title"] => string(9) "安环部"
["deptId"] => int(3)
}
["sum"] => int(50)
}
[1] => array(4) {
[0] => array(14) {
["danName"] => string(6) "硫磺"
["standard"] => string(13) "GB/T2449-2006"
["danCate"] => string(18) "易燃性固体233"
["price"] => string(6) "120.00"
["unit"] => string(2) "kg"
["stock"] => int(69)
["id"] => int(1)
["date"] => string(19) "2018-01-15 14:37:29"
["operator"] => string(0) ""
["remark"] => string(21) "硫磺领用测试233"
["borrower"] => string(5) "admin"
["num"] => int(4)
["title"] => string(9) "行政部"
["deptId"] => int(2)
}
[1] => array(14) {
["danName"] => string(6) "乙烷"
["standard"] => string(3) "YW1"
["danCate"] => string(15) "易燃性气体"
["price"] => string(5) "10.00"
["unit"] => string(2) "KG"
["stock"] => int(85)
["id"] => int(1)
["date"] => string(19) "2018-01-12 15:08:04"
["operator"] => string(5) "admin"
["remark"] => string(21) "乙烷领用测试123"
["borrower"] => string(5) "admin"
["num"] => int(20)
["title"] => string(9) "行政部"
["deptId"] => int(2)
}
[2] => array(14) {
["danName"] => string(6) "乙烷"
["standard"] => string(3) "YW1"
["danCate"] => string(15) "易燃性气体"
["price"] => string(5) "10.00"
["unit"] => string(2) "KG"
["stock"] => int(85)
["id"] => int(1)
["date"] => string(19) "2018-01-12 15:08:11"
["operator"] => string(5) "admin"
["remark"] => string(21) "乙烷领用测试456"
["borrower"] => string(5) "admin"
["num"] => int(2)
["title"] => string(9) "行政部"
["deptId"] => int(2)
}
["sum"] => int(700)
}
[2] => array(0) {
}
[3] => array(0) {
}
[4] => array(0) {
}
[5] => array(0) {
}
[6] => array(0) {
}
[7] => array(0) {
}
}

这个是数据
比如数组第二层中第二个元素,里面有4个数组元素,3个数字键值的1个字母的,其中第二个和第三个里面的danName都是乙烷
怎么样把这两个danName相同的合并起来?然后其他不变,num这个字段是被合并这2个元素中num的和,date用最近那个

我把json数据发出来,求大佬帮个忙
string(1278) "[{"0":{"danName":"\u7532\u70f7","standard":"CH4","danCate":"\u6613\u71c3\u6027\u6c14\u4f53","price":"10.00","unit":"\u7acb\u65b9\u7c73","stock":5,"id":41,"date":"2018-01-12 11:16:23","operator":"admin","remark":"\u7532\u70f7\u9886\u7528\u6d4b\u8bd5","borrower":"aut77","num":5,"title":"\u5b89\u73af\u90e8","deptId":3},"sum":50},{"0":{"danName":"\u786b\u78fa","standard":"GB\/T2449-2006","danCate":"\u6613\u71c3\u6027\u56fa\u4f53233","price":"120.00","unit":"kg","stock":69,"id":1,"date":"2018-01-15 14:37:29","operator":"","remark":"\u786b\u78fa\u9886\u7528\u6d4b\u8bd5233","borrower":"admin","num":4,"title":"\u884c\u653f\u90e8","deptId":2},"1":{"danName":"\u4e59\u70f7","standard":"YW1","danCate":"\u6613\u71c3\u6027\u6c14\u4f53","price":"10.00","unit":"KG","stock":85,"id":1,"date":"2018-01-12 15:08:04","operator":"admin","remark":"\u4e59\u70f7\u9886\u7528\u6d4b\u8bd5123","borrower":"admin","num":20,"title":"\u884c\u653f\u90e8","deptId":2},"2":{"danName":"\u4e59\u70f7","standard":"YW1","danCate":"\u6613\u71c3\u6027\u6c14\u4f53","price":"10.00","unit":"KG","stock":85,"id":1,"date":"2018-01-12 15:08:11","operator":"admin","remark":"\u4e59\u70f7\u9886\u7528\u6d4b\u8bd5456","borrower":"admin","num":2,"title":"\u884c\u653f\u90e8","deptId":2},"sum":700},[],[],[],[],[],[]]"
...全文
738 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34139573 2018-01-23
  • 打赏
  • 举报
回复
$str = '[{"0":{"danName":"\u7532\u70f7","standard":"CH4","danCate":"\u6613\u71c3\u6027\u6c14\u4f53","price":"10.00","unit":"\u7acb\u65b9\u7c73","stock":5,"id":41,"date":"2018-01-12 11:16:23","operator":"admin","remark":"\u7532\u70f7\u9886\u7528\u6d4b\u8bd5","borrower":"aut77","num":5,"title":"\u5b89\u73af\u90e8","deptId":3},"sum":50},{"0":{"danName":"\u786b\u78fa","standard":"GB\/T2449-2006","danCate":"\u6613\u71c3\u6027\u56fa\u4f53233","price":"120.00","unit":"kg","stock":69,"id":1,"date":"2018-01-15 14:37:29","operator":"","remark":"\u786b\u78fa\u9886\u7528\u6d4b\u8bd5233","borrower":"admin","num":4,"title":"\u884c\u653f\u90e8","deptId":2},"1":{"danName":"\u4e59\u70f7","standard":"YW1","danCate":"\u6613\u71c3\u6027\u6c14\u4f53","price":"10.00","unit":"KG","stock":85,"id":1,"date":"2018-01-12 15:08:04","operator":"admin","remark":"\u4e59\u70f7\u9886\u7528\u6d4b\u8bd5123","borrower":"admin","num":20,"title":"\u884c\u653f\u90e8","deptId":2},"2":{"danName":"\u4e59\u70f7","standard":"YW1","danCate":"\u6613\u71c3\u6027\u6c14\u4f53","price":"10.00","unit":"KG","stock":85,"id":1,"date":"2018-01-12 15:08:11","operator":"admin","remark":"\u4e59\u70f7\u9886\u7528\u6d4b\u8bd5456","borrower":"admin","num":2,"title":"\u884c\u653f\u90e8","deptId":2},"sum":700},[],[],[],[],[],[]]';

$arr = json_decode($str,1);
foreach ($arr as $k => $v) {
    $tmp = array();
    foreach ($v as $kk => $vv) {
        if(is_array($vv)){
            $name = $vv['danName'];
            if(isset($tmp[$name])){
                $tmp[$name]['num'] += $vv['num'];
                $tmp[$name]['date'] = $tmp[$name]['date']>=$vv['date'] ? $tmp[$name]['date'] : $vv['date'];
            }else{
                $tmp[$name] = $vv;
            }
        }else{
            $tmp[$kk] = $vv;
        }
    }

    $arr[$k] = $tmp;
}
print_r($arr);

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧