2012-08-12 121 views
0

我对如何做到这一点的想法很困惑,所以我不完全确定要问什么,但是在这里。PHP分组/总计

这是我到目前为止有:

foreach($order as $key => $ord){ 
    $attribute = explode(":", $order[$key]);  
    echo sku($attribute[0],$attribute[2],$attribute[1],$attribute[4])." - ".$attribute[3].";  
} 

这样做的输出会像

SKU - QUANTITY 
1001-01 - 5 
1001-02 - 3 
1001-01 - 1 
1045-02 - 1 
1001-02 - 8 
1001-01 - 3 
1003-01 - 4 

我需要共计这些的一种方式,使其显示

SKU - QUANTITY 
1001-01 - 9 
1001-02 - 11 
1003-01 - 4 
1045-02 - 1 

这可能吗?

回答

1

是的,这是可能的。只要使用与SKU数组作为重点:

$totals = array(); 

foreach($order as $ord){ 
    $attribute = explode(":", $ord);  

    $sku = sku($attribute[0],$attribute[2],$attribute[1],$attribute[4]) 

    $amt = $attribute[3]; 

    if (isset($totals[$sku])) { 
     $totals[$sku] += $amt; 
    } else { 
     $totals[$sku] = $amt; 
    } 

} 

在一个侧面说明:explode被要求做这样的事情往往意味着数据不被存储在正确的格式。

另外,$order[$key]$ord完全一样,所以我不确定你为什么使用$order[$key]