当前位置 : 主页 > 网络编程 > PHP >

根据数组按照时间月份分组

来源:互联网 收集:自由互联 发布时间:2023-09-03
{ "code": 200, "msg": "success", "data": { "sumprice": 42, "arrearslist": [ { "years": 2023, "month": 1, "sumprice": 11, "childen": [ { "id": 28, "billdtimes": "2023-01-01", "month": 1, "price": "8.00", "years": 2023, "wuyeId": 1, "communit
{
    "code": 200,
    "msg": "success",
    "data": {
        "sumprice": 42,
        "arrearslist": [
            {
                "years": 2023,
                "month": 1,
                "sumprice": 11,
                "childen": [
                    {
                        "id": 28,
                        "billdtimes": "2023-01-01",
                        "month": 1,
                        "price": "8.00",
                        "years": 2023,
                        "wuyeId": 1,
                        "communityId": 3,
                        "unitNumber": 2,
                        "buildingId": 1,
                        "roomNumber": "302",
                        "billStartime": "2023-01-01",
                        "billEndtime": "2023-01-31"
                    },
                    {
                        "id": 31,
                        "billdtimes": "2023-01-01",
                        "month": 1,
                        "price": "3.00",
                        "years": 2023,
                        "wuyeId": 1,
                        "communityId": 3,
                        "unitNumber": 2,
                        "buildingId": 1,
                        "roomNumber": "302",
                        "billStartime": "2023-01-01",
                        "billEndtime": "2023-01-31"
                    }
                ]
            },
            {
                "years": 2023,
                "month": 2,
                "sumprice": "8.00",
                "childen": [
                    {
                        "id": 29,
                        "billdtimes": "2023-02-01",
                        "month": 2,
                        "price": "8.00",
                        "years": 2023,
                        "wuyeId": 1,
                        "communityId": 3,
                        "unitNumber": 2,
                        "buildingId": 1,
                        "roomNumber": "302",
                        "billStartime": "2023-02-01",
                        "billEndtime": "2023-02-28"
                    }
                ]
            },
            {
                "years": 2023,
                "month": 3,
                "sumprice": "8.00",
                "childen": [
                    {
                        "id": 30,
                        "billdtimes": "2023-03-01",
                        "month": 3,
                        "price": "8.00",
                        "years": 2023,
                        "wuyeId": 1,
                        "communityId": 3,
                        "unitNumber": 2,
                        "buildingId": 1,
                        "roomNumber": "302",
                        "billStartime": "2023-03-01",
                        "billEndtime": "2023-03-31"
                    }
                ]
            },
            {
                "years": 2023,
                "month": 4,
                "sumprice": 9,
                "childen": [
                    {
                        "id": 6,
                        "billdtimes": "2023-04-01",
                        "month": 4,
                        "price": "6.00",
                        "years": 2023,
                        "wuyeId": 1,
                        "communityId": 3,
                        "unitNumber": 2,
                        "buildingId": 1,
                        "roomNumber": "302",
                        "billStartime": "1970-01-01",
                        "billEndtime": "1970-01-01"
                    },
                    {
                        "id": 7,
                        "billdtimes": "2023-04-01",
                        "month": 4,
                        "price": "1.00",
                        "years": 2023,
                        "wuyeId": 1,
                        "communityId": 3,
                        "unitNumber": 2,
                        "buildingId": 1,
                        "roomNumber": "302",
                        "billStartime": "1970-01-01",
                        "billEndtime": "1970-01-01"
                    },
                    {
                        "id": 8,
                        "billdtimes": "2023-04-01",
                        "month": 4,
                        "price": "2.00",
                        "years": 2023,
                        "wuyeId": 1,
                        "communityId": 3,
                        "unitNumber": 2,
                        "buildingId": 1,
                        "roomNumber": "302",
                        "billStartime": "1970-01-01",
                        "billEndtime": "1970-01-01"
                    }
                ]
            },
            {
                "years": 2022,
                "month": 12,
                "sumprice": "6.00",
                "childen": [
                    {
                        "id": 11,
                        "billdtimes": "2022-12-01",
                        "month": 12,
                        "price": "6.00",
                        "years": 2022,
                        "wuyeId": 1,
                        "communityId": 3,
                        "unitNumber": 2,
                        "buildingId": 1,
                        "roomNumber": "302",
                        "billStartime": "2022-12-01",
                        "billEndtime": "2022-12-30"
                    }
                ]
            }
        ]
    }
}

元数据:


(
    [0] => Array
        (
            [id] => 28
            [billdtimes] => 1672502400
            [month] => 1
            [price] => 8.00
            [years] => 2023
            [wuyeId] => 1
            [communityId] => 3
            [unitNumber] => 2
            [buildingId] => 1
            [roomNumber] => 302
            [billStartime] => 1672502400
            [billEndtime] => 1675094400
        )

    [1] => Array
        (
            [id] => 31
            [billdtimes] => 1672502400
            [month] => 1
            [price] => 3.00
            [years] => 2023
            [wuyeId] => 1
            [communityId] => 3
            [unitNumber] => 2
            [buildingId] => 1
            [roomNumber] => 302
            [billStartime] => 1672502400
            [billEndtime] => 1675094400
        )

    [2] => Array
        (
            [id] => 29
            [billdtimes] => 1675180800
            [month] => 2
            [price] => 8.00
            [years] => 2023
            [wuyeId] => 1
            [communityId] => 3
            [unitNumber] => 2
            [buildingId] => 1
            [roomNumber] => 302
            [billStartime] => 1675180800
            [billEndtime] => 1677513600
        )

    [3] => Array
        (
            [id] => 30
            [billdtimes] => 1677600000
            [month] => 3
            [price] => 8.00
            [years] => 2023
            [wuyeId] => 1
            [communityId] => 3
            [unitNumber] => 2
            [buildingId] => 1
            [roomNumber] => 302
            [billStartime] => 1677600000
            [billEndtime] => 1680192000
        )

    [4] => Array
        (
            [id] => 6
            [billdtimes] => 1680313031
            [month] => 4
            [price] => 6.00
            [years] => 2023
            [wuyeId] => 1
            [communityId] => 3
            [unitNumber] => 2
            [buildingId] => 1
            [roomNumber] => 302
            [billStartime] => 0
            [billEndtime] => 0
        )

    [5] => Array
        (
            [id] => 7
            [billdtimes] => 1680313031
            [month] => 4
            [price] => 1.00
            [years] => 2023
            [wuyeId] => 1
            [communityId] => 3
            [unitNumber] => 2
            [buildingId] => 1
            [roomNumber] => 302
            [billStartime] => 0
            [billEndtime] => 0
        )

    [6] => Array
        (
            [id] => 8
            [billdtimes] => 1680313031
            [month] => 4
            [price] => 2.00
            [years] => 2023
            [wuyeId] => 1
            [communityId] => 3
            [unitNumber] => 2
            [buildingId] => 1
            [roomNumber] => 302
            [billStartime] => 0
            [billEndtime] => 0
        )

    [7] => Array
        (
            [id] => 11
            [billdtimes] => 1669859617
            [month] => 12
            [price] => 6.00
            [years] => 2022
            [wuyeId] => 1
            [communityId] => 3
            [unitNumber] => 2
            [buildingId] => 1
            [roomNumber] => 302
            [billStartime] => 1669859617
            [billEndtime] => 1672365217
        )

)


 if(!$payStatus){
            $sonlist = $new_son_bill->field("id,wuye_id,community_id,billdtimes,unit_number,building_id,month,price,room_number,years,bill_startime,bill_endtime")
                ->where($wheres)
                ->order(['month','room_number'=>'asc'])
                ->select()->toArray();//查询子表列表
            foreach ($sonlist as &$item) {
                $item['billdtimes'] = date("Y-m-d",$item['billdtimes']);
                $item['billStartime'] = date("Y-m-d",$item['billStartime']);
                $item['billEndtime'] = date("Y-m-d",$item['billEndtime']);
            }
下面是根据年份跟月份提取数组,关键点就是:$keys  将年份月份弄成keys来判断是否设置然后进行设置内容
            pp($sonlist);
            $arr1 = [];
            foreach ($sonlist as $k=>$v) {
                $keys = $v['years'].$v['month'];
                if(!isset($arr1[$keys])){
                    $arr1[$keys]['years'] = $v['years'];
                    $arr1[$keys]['month'] = $v['month'];
                    $arr1[$keys]['sumprice'] = $v['price'];
                    $arr1[$keys]['childen'][] = $v;
                }else{
                    $arr1[$keys]['sumprice'] += $v['price'];
                    $arr1[$keys]['childen'][] = $v;
                }
            }

            $resinfo['arrearslist'] = array_values($arr1);
        }
















上一篇:PHP中的引用参数的函数
下一篇:没有了
网友评论