PHP GROUP DATA COMPARE

how can group date and calculate sum of weight then put assoc array php?

{name:"A",date:"2012-12-11",order:1,time:3,weight:10},
{name:"A",date:"2012-12-11",order:1,time:4,weight:12},
{name:"B",date:"2012-12-11",order:1,time:3,weight:17},
{name:"A",date:"2012-12-12",order:1,time:5,weight:50},
{name:"A",date:"2012-12-12",order:2,time:3,weight:70}

According this sum of weight day by day but problem is if(same date same order same name ; which one greater time take its weight, dont care less) but different name or order take sum of group.

Result must be like:

{date:2012-12-11,weight:29},
{date:2012-12-12,weight:120},

Anyone Help ? it can be like:

   {name:"A",date:"2012-12-11",order:1,time:3,weight:10}, 
    {name:"B",date:"2012-12-11",order:1,time:3,weight:17},
    {name:"A",date:"2012-12-11‌​",order:1,time:4,weight:12},
     {name:"A",date:"2012-12-12",order:1,time:5,weight:50},
     {name:"A",date:"2012-12-12",order:2,time:3,weight:70}

i am sure there is a much simpler solution to this, but i think this will suffice:

$json  = '[';
$json .= '{"name":"A","date":"2012-12-11","order":1,"time":3,"weight":10},';
$json .= '{"name":"A","date":"2012-12-11","order":1,"time":4,"weight":12},';
$json .= '{"name":"B","date":"2012-12-11","order":1,"time":3,"weight":17},';
$json .= '{"name":"A","date":"2012-12-12","order":1,"time":5,"weight":50},';
$json .= '{"name":"A","date":"2012-12-12","order":2,"time":3,"weight":70}]';

$orders = json_decode($json, true);

$result = array();
foreach ($orders as $row) {
    $key = $row['date'].'.'.$row['order'].'.'.$row['time'];
    $result[$key]['date'] = $row['date'];

    if (isset($result[$key]['weight'])) {

        if ($row['weight'] > $result[$key]['weight']) {
            $result[$key]['weight'] = $row['weight'];
        }
    } else {
        $result[$key]['weight'] = $row['weight'];
    }

}


$realresult = array();
foreach ($result as $row) {
    $realresult[$row['date']]['date'] = $row['date'];

    if (isset($realresult[$row['date']]['weight'])) {
        $realresult[$row['date']]['weight'] += $row['weight'];
    } else {
        $realresult[$row['date']]['weight'] = $row['weight'];
    }
}

print_r($realresult);

//Array ( [2012-12-11] => Array ( [date] => 2012-12-11 [weight] => 29 ) [2012-12-12] => Array ( [date] => 2012-12-12 [weight] => 120 ) ) 

you can try it out here: http://codepad.viper-7.com/lSEhBC