Php 从现有组合数组创建类似json的树视图

Php 从现有组合数组创建类似json的树视图,php,arrays,json,Php,Arrays,Json,我有一个order的组合数组,它的项组合成一个数组,但我试图创建类似order的json结构,然后创建类似wise的项目列表 $combinedarray[]=array('orderid'=>1,'partycode'=>10,"item"=>'abc',"price"=>250); $combinedarray[]=array('orderid'=>1,'partycode'=>10,"item"=>'xyz',"price"=>250);

我有一个order的组合数组,它的项组合成一个数组,但我试图创建类似order的json结构,然后创建类似wise的项目列表

$combinedarray[]=array('orderid'=>1,'partycode'=>10,"item"=>'abc',"price"=>250); 
$combinedarray[]=array('orderid'=>1,'partycode'=>10,"item"=>'xyz',"price"=>250); 
$combinedarray[]=array('orderid'=>2,'partycode'=>20,"item"=>'pqr',"price"=>250); 
$combinedarray[]=array('orderid'=>2,'partycode'=>20,"item"=>'lmn',"price"=>250); 
输出应该是

[
    "0":[
         {
            "OrderNo": "1",
            "partycode": "10",
            "OrderDetails": [
                {
                    "Item": "abc",
                    "price": 250
                },
                {
                    "Item": "xyz",
                    "price": 250
                }
                ]
          }
        ],
    "1":[
         {
            "OrderNo": "2",
            "partycode": "20", 
            "OrderDetails": [
                {
                    "Item": "pqr",
                    "price": 250
                },
                {
                    "Item": "lmn",
                    "price": 250
                }
                ]
          }
        ]    
]
这就是我尝试的

$mainarray = array();
            $orderarray = array();
            $orderitemarray = array();
            if (count(combinedarray) > 0) {
                foreach (combinedarray as $obj) {
                    $orderarray[] = array("orderid" => $obj->orderid);
                    $orderitemarray[] = array("Item" => $obj->Item, "price" => $obj->price);
                }


            }
            $mainarray[] = array_unique($orderarray);
            $mainarray['OrderDetails'] = $orderitemarray;
            echo json_encode($mainarray);
根据给定的数组

$combinedarray[]=array('orderid'=>1,'partycode'=>10,"item"=>'abc',"price"=>250); 
$combinedarray[]=array('orderid'=>1,'partycode'=>10,"item"=>'xyz',"price"=>250); 
$combinedarray[]=array('orderid'=>2,'partycode'=>20,"item"=>'pqr',"price"=>250); 
$combinedarray[]=array('orderid'=>2,'partycode'=>20,"item"=>'lmn',"price"=>250); 
这是我的解决方案

$new  = array();
foreach($combinedarray as $r){
    $new[$r['orderid']]['orderid'] = $r['orderid'];
    $new[$r['orderid']]['partycode'] = $r['partycode'];
    $new[$r['orderid']][] = array("item"=>$r['item'],"price"=>$r['price']);

}
$json = json_encode($new);
echo '<pre>';print_r($new);
echo $json;
$new=array();
foreach($r组合阵列){
$new[$r['orderid']['orderid']=$r['orderid'];
$new[$r['orderid']['partycode']=$r['partycode'];
$new[$r['orderid']][]=array(“item”=>$r['item'],“price”=>$r['price']);
}
$json=json_encode($new);
回声';印刷(新);
echo$json;

我有另一个常见的订单列,如partycode,那么我该如何安排?请参阅更新的问题我有另一个常见的顺序栏,如partycode,那么我该如何安排?见更新的问题
$mainarray = array();
foreach ($combinedarray as $x) {
    $id = $x['orderid']; 
    unset($x['orderid']);
    if (! isset($mainarray[$id])) {
        $mainarray[$id]['OrderNo'] = $id;
    }
    $mainarray[$id]["OrderDetails"][] = $x;
}
// Now $mainarray has indexes equal to OrderNo. To count it from zero, use array_values
echo json_encode(array_values($mainarray), JSON_PRETTY_PRINT);