按键和值对 PHP 数组进行分组

我有一个这样的 PHP 数组,我想按 created_month 和 seq 对它们进行分组,我尝试过合并和其他方法,但它不起作用


"data": [

    {

        "seq": "1",

        "created_month": "Aug",

        "descr": "[YOU] - Not Recieved",

        "paydescr": "Revenue",

        "amount": "205.85"

    },

    {

        "seq": "1",

        "created_month": "Jul",

        "descr": "[YOU] - Not Recieved",

        "paydescr": "Revenue",

        "amount": "176.82"

    },

    {

        "seq": "2",

        "created_month": "Aug",

        "descr": "[OT] - Not Recieved",

        "paydescr": "Commission",

        "amount": "74.19"

    },

    {

        "seq": "2",

        "created_month": "Jul",

        "descr": "[OT] - Not Recieved",

        "paydescr": "Commission",

        "amount": "63.71"

    }

]

并希望像这样显示它,这将按创建的月份和序列分组


[{"data":[  

     {  

        "Aug":[  

           {  

     "1":[  

           { 

            "descr": "[YOU] - Not Received",

            "paydescr": "Revenue",

            "amount": "0.00"

            }

    ],

    "2":[  

           {"descr": "[YOU] - Not Received",

            "paydescr": "Revenue",

            "amount": "0.00"

            }

     ]

           }

        ]

     }

  ]

]]


哔哔one
浏览 158回答 3
3回答

ITMISS

使用 array_reduce 可以解决您的问题。$data = '{"data": [{&nbsp; &nbsp; "seq": "1",&nbsp; &nbsp; "created_month": "Aug",&nbsp; &nbsp; "descr": "[YOU] - Not Recieved",&nbsp; &nbsp; "paydescr": "Revenue",&nbsp; &nbsp; "amount": "205.85"}, {&nbsp; &nbsp; "seq": "1",&nbsp; &nbsp; "created_month": "Jul",&nbsp; &nbsp; "descr": "[YOU] - Not Recieved",&nbsp; &nbsp; "paydescr": "Revenue",&nbsp; &nbsp; "amount": "176.82"}, {&nbsp; &nbsp; "seq": "2",&nbsp; &nbsp; "created_month": "Aug",&nbsp; &nbsp; "descr": "[OT] - Not Recieved",&nbsp; &nbsp; "paydescr": "Commission",&nbsp; &nbsp; "amount": "74.19"}, {&nbsp; &nbsp; "seq": "2",&nbsp; &nbsp; "created_month": "Jul",&nbsp; &nbsp; "descr": "[OT] - Not Recieved",&nbsp; &nbsp; "paydescr": "Commission",&nbsp; &nbsp; "amount": "63.71"}]}';$data = json_decode($data, true);$group = array_reduce($data['data'], function ($old, $new) {&nbsp; &nbsp; $key = "{$new['created_month']}_{$new['seq']}";&nbsp; &nbsp; unset($new['created_month'], $new['seq']);&nbsp; &nbsp; $old[$key][] = $new;&nbsp; &nbsp; return $old;}, []);print '<pre>';print_r($group); // Ass arrayprint_r(json_encode($group)); // As JSON

摇曳的蔷薇

使用这个 php 代码:$data = '{"data": [{&nbsp; &nbsp; "seq": "1",&nbsp; &nbsp; "created_month": "Aug",&nbsp; &nbsp; "descr": "[YOU] - Not Recieved",&nbsp; &nbsp; "paydescr": "Revenue",&nbsp; &nbsp; "amount": "205.85"}, {&nbsp; &nbsp; "seq": "1",&nbsp; &nbsp; "created_month": "Jul",&nbsp; &nbsp; "descr": "[YOU] - Not Recieved",&nbsp; &nbsp; "paydescr": "Revenue",&nbsp; &nbsp; "amount": "176.82"}, {&nbsp; &nbsp; "seq": "2",&nbsp; &nbsp; "created_month": "Aug",&nbsp; &nbsp; "descr": "[OT] - Not Recieved",&nbsp; &nbsp; "paydescr": "Commission",&nbsp; &nbsp; "amount": "74.19"}, {&nbsp; &nbsp; "seq": "2",&nbsp; &nbsp; "created_month": "Jul",&nbsp; &nbsp; "descr": "[OT] - Not Recieved",&nbsp; &nbsp; "paydescr": "Commission",&nbsp; &nbsp; "amount": "63.71"}]}';$data = json_decode($data, true);$newArr = array();foreach($data['data'] as $k=>$v){&nbsp; &nbsp; $newArr[$v['created_month']][$v['seq']][] = array("descr"=>$v['descr'],"paydescr"=>$v['paydescr'],"amount"=>$v['amount']);}echo json_encode($newArr);
打开App,查看更多内容
随时随地看视频慕课网APP