得到阵列和总和独特价值(get unique value from array and sum to

2019-11-01 08:11发布

从这个Array()我想抓住的值amount_total ,航运和合作伙伴,并通过特定的合作伙伴他们总起来。 因此,例如在partner=>2665应该有41.79 + 55.95等一个amount_total请帮助。 我不想通过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
    )
)

Answer 1:

你可以使用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 );


Answer 2:

我想通过这个数组循环和存储总计在新的数组,检查沿in_array ( 这里更多 )应该足够了。 所有你需要做的是通过每一个元素你循环,检查它是否已经在新的数组的时间,如果它是 - 进行必要的数学运算



Answer 3:

我建议是这样的:

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

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

这样,你得到所有你在一个地方需要的数据:合作伙伴阵“$水库”。

希望它可以帮助你。



文章来源: get unique value from array and sum totals