从这个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
)
)
你可以使用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 );
我想通过这个数组循环和存储总计在新的数组,检查沿in_array
( 这里更多 )应该足够了。 所有你需要做的是通过每一个元素你循环,检查它是否已经在新的数组的时间,如果它是 - 进行必要的数学运算
我建议是这样的:
$res['totals']=array();
foreach($result as $res)
{
$partner = $result['partner'];
$res['totals'][$partner]+=$result['total_amount'];
}
这样,你得到所有你在一个地方需要的数据:合作伙伴阵“$水库”。
希望它可以帮助你。