-1

如何分组日期并计算重量总和然后放入 assoc 数组 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}

根据这个重量总和一天一天,但问题是如果(相同日期相同订单相同名称;哪个更大的时间占其权重,不在乎)但不同的名称或订单占组的总和。

结果必须是这样的:

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

有人帮忙吗?它可以像

{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}
4

1 回答 1

0

你需要两件事, json_decode

$arr = json_decode($data, true);  // `true` makes an associative array

usort

usort($arr, "sortfcn");

...其中sortfcn是一个带有自定义函数名称的字符串,用于您的排序:

function sortfcn($a, $b) {
    if ($a['date'] > $b['date') { return 1; }
    else if ($a['date'] < $b['date']) { return -1; } 

    return 0;
}

我还没有测试过这些,但这是主要思想,请查看文档以清除我的语法错误并更好地了解这件事。它肯定会做你想做的事。

对权重求和是一个简单的问题,即foreach通过排序数组并将其相加。

于 2013-06-10T09:01:47.387 回答