2012-12-27 75 views
0

從這個Array()我想要獲取amount_total,運輸和合作夥伴的值,並由特定合作伙伴對其進行總計。因此,例如partner=>2665應該有一個amount_total 41.79 + 55.95等請幫助。我不想通過SQL來完成,因爲我也需要這些數據。從數組和總計中獲得唯一值

Array 
(
    [0] => Array 
    (
     [amount_total] => 41.79 
     [amount_shipping] => 4.99 
     [amount_partner] => 14.8 
     [partner] => 2665 
    ) 
    [1] => Array 
    (
     [amount_total] => 55.95 
     [amount_shipping] => 19.96 
     [amount_partner] => 11 
     [partner] => 2665 
    ) 
    [2] => Array 
    (
     [amount_total] => 51.96 
     [amount_shipping] => 7.98 
     [amount_partner] => 23.98 
     [partner] => 51754 
    ) 
    [3] => Array 
    (
     [amount_total] => 24.55 
     [amount_shipping] => 4.99 
     [amount_partner] => 5.67 
     [partner] => 11513 
    ) 
) 
+0

這是一個數據庫結果集? –

+0

so im doing foreach($ result as $ res){ $ partner [$ res ['partner']] = array( 'amount_total'=>? ); } – Yeak

+0

是它是數據庫結果 – Yeak

回答

2

您可以使用PHP來實現這一點,但這不是必需的。 數據庫可以做到這一點更有效地

我假設你當前的查詢看起來是這樣的

SELECT 
    `amount_total`, 
    `amount_shipping`, 
    `amount_partner`, 
    `partner` 
FROM 
    `salesLeads` 
WHERE 
    [..] 

MySQL的給你很好的聚合功能,如SUM你可以用GROUP BY

SELECT 
    SUM(`amount_total`) AS `amount_total`, 
    SUM(`amount_shipping`) AS `amount_shipping`, 
    SUM(`amount_partner`) AS `amount_partner`. 
    `partner` 
FROM 
    `salesLeads` 
WHERE 
    [..] 
GROUP BY 
    `partner` 

在使用您以同樣的方式訪問您的PHP腳本,但它的最終號碼已由合作伙伴分組和歸類

例如

if ($result = $mysqli->query($query)) { 

    while ($row = $result->fetch_assoc()) { 
     print_r($row); 
    } 

    $result->close(); 
} 

編輯

因爲你想要一個PHP的解決方案,而這又是不是查詢兩次更有效:

$partnerSums = array(); 
while ($row = $result->fetch_assoc()) { 
    if (!array_key_exists($row['partner'], $partnerSums) { 
      $partnerSums[$row['partner']] = $row; 
    } else { 
      $partnerSums[$row['partner']]['amount_total'] += $row['amount_total']; 
      $partnerSums[$row['partner']]['amount_shipping'] += $row['amount_shipping']; 
      $partnerSums[$row['partner']]['amount_partner'] += $row['amount_partner']; 
    } 
} 

print_r($partnerSums); 
+0

沒有真正閱讀過「不想在SQL中執行它,因爲..」,看看[fireeyedboys答案](http://stackoverflow.com/questions/14060560/get-unique-數值和總數/ 14061798#14061914) –

+0

增加了一個PHP解決方案 –

+0

這似乎並不奏效,它並沒有給我這個合夥人的總數 – Yeak

0

我想通過這個數組循環和存儲的總計在新的數組,與檢查in_arraymore here)沿着應該足夠了。所有你需要做的是每次通過一個元素你循環,檢查它是否已經在新的數組,如果是 - 進行必要的數學運算

+0

所以Im做 的foreach($結果作爲$ RES){$ 夥伴[$ RES [ '夥伴']] =陣列( 'amount_total'=> ); } – Yeak

0

我建議是這樣的:

$res['totals']=array(); 

foreach($result as $res) 
{ 
    $partner = $result['partner']; 
    $res['totals'][$partner]+=$result['total_amount']; 
} 

這你只需要在一個地方獲得你需要的所有數據:合作伙伴數組'$ res'。

希望它可以幫助你。