Php 按同一键的值的数组和
如何基于相同的“站点ID”和“TransactionType”对“金额”求和。 我的数据如下所示:Php 按同一键的值的数组和,php,arrays,Php,Arrays,如何基于相同的“站点ID”和“TransactionType”对“金额”求和。 我的数据如下所示: Array ( [0] => Array ( [SiteID] => 147 [Amount] => 500.00 [TransactionType] => Deposit ) [1] => Array ( [SiteID] => 147 [Amount] => 500.00 [TransactionType] => Redemption) [2
Array (
[0] => Array ( [SiteID] => 147 [Amount] => 500.00 [TransactionType] => Deposit )
[1] => Array ( [SiteID] => 147 [Amount] => 500.00 [TransactionType] => Redemption)
[2] => Array ( [SiteID] => 147 [Amount] => 1500.00[TransactionType] => Deposit )
[3] => Array ( [SiteID] => 147 [Amount] => 200.00 [TransactionType] => Reload )
[4] => Array ( [SiteID] => 150 [Amount] => 100.00 [TransactionType] => Deposit )
[5] => Array ( [SiteID] => 3 [Amount] => 500.00 [TransactionType] => Redemption )
[6] => Array ( [SiteID] => 150 [Amount] => 200.00 [TransactionType] => Redemption )
[7] => Array ( [SiteID] => 3 [Amount] => 500.00 [TransactionType] => Deposit )
[8] => Array ( [SiteID] => 3 [Amount] => 200.00 [TransactionType] => Deposit )
[9] => Array ( [SiteID] => 3 [Amount] => 200.00 [TransactionType] => Reload )
[10] => Array ( [SiteID] =>147 [Amount] => 500.00 [TransactionType] => Redemption ))
)
$transactions = array (
array( 'SiteID' => 147, 'Amount' => '500.00', 'TransactionType' => 'Deposit' ),
array( 'SiteID' => 147, 'Amount' => '500.00', 'TransactionType' => 'Redemption'),
array( 'SiteID' => 147, 'Amount' => '1500.00', 'TransactionType' => 'Deposit' ),
array( 'SiteID' => 147, 'Amount' => '200.00', 'TransactionType' => 'Reload' ),
array( 'SiteID' => 150, 'Amount' => '100.00', 'TransactionType' => 'Deposit' ),
array( 'SiteID' => 3, 'Amount' => '500.00', 'TransactionType' => 'Redemption' ),
array( 'SiteID' => 150, 'Amount' => '200.00', 'TransactionType' => 'Redemption' ),
array( 'SiteID' => 3, 'Amount' => '500.00', 'TransactionType' => 'Deposit' ),
array( 'SiteID' => 3, 'Amount' => '200.00', 'TransactionType' => 'Deposit' ),
array( 'SiteID' => 3, 'Amount' => '200.00', 'TransactionType' => 'Reload' ),
array( 'SiteID' =>147, 'Amount' => '500.00', 'TransactionType' => 'Redemption' )
);
$totals = null;
foreach ($transactions as $t){
$amount = (float) $t['Amount'];
if (isset($totals[ $t['SiteID'] ][ $t['TransactionType'] ])){
$totals[ $t['SiteID'] ][ $t['TransactionType'] ] += (float) $amount;
} else {
$totals[ $t['SiteID'] ][ $t['TransactionType'] ] = (float) $amount;
}
}
print_r ($totals);
谢谢。请回复:) 请以后提供一个工作数组片段
array ([147]=>array([Deposit] => "total amount", [Reload]=> "total amount" [Redemption]=> "total amount"))
array ([150]=>array([Deposit] => "total amount", [Reload]=> "total amount" [Redemption]=> "total amount"))
array ([3]=>array ([Deposit] => "total amount", [Reload]=> "total amount" [Redemption]=> "total amount"))
这将产生如下结果:
Array (
[0] => Array ( [SiteID] => 147 [Amount] => 500.00 [TransactionType] => Deposit )
[1] => Array ( [SiteID] => 147 [Amount] => 500.00 [TransactionType] => Redemption)
[2] => Array ( [SiteID] => 147 [Amount] => 1500.00[TransactionType] => Deposit )
[3] => Array ( [SiteID] => 147 [Amount] => 200.00 [TransactionType] => Reload )
[4] => Array ( [SiteID] => 150 [Amount] => 100.00 [TransactionType] => Deposit )
[5] => Array ( [SiteID] => 3 [Amount] => 500.00 [TransactionType] => Redemption )
[6] => Array ( [SiteID] => 150 [Amount] => 200.00 [TransactionType] => Redemption )
[7] => Array ( [SiteID] => 3 [Amount] => 500.00 [TransactionType] => Deposit )
[8] => Array ( [SiteID] => 3 [Amount] => 200.00 [TransactionType] => Deposit )
[9] => Array ( [SiteID] => 3 [Amount] => 200.00 [TransactionType] => Reload )
[10] => Array ( [SiteID] =>147 [Amount] => 500.00 [TransactionType] => Redemption ))
)
$transactions = array (
array( 'SiteID' => 147, 'Amount' => '500.00', 'TransactionType' => 'Deposit' ),
array( 'SiteID' => 147, 'Amount' => '500.00', 'TransactionType' => 'Redemption'),
array( 'SiteID' => 147, 'Amount' => '1500.00', 'TransactionType' => 'Deposit' ),
array( 'SiteID' => 147, 'Amount' => '200.00', 'TransactionType' => 'Reload' ),
array( 'SiteID' => 150, 'Amount' => '100.00', 'TransactionType' => 'Deposit' ),
array( 'SiteID' => 3, 'Amount' => '500.00', 'TransactionType' => 'Redemption' ),
array( 'SiteID' => 150, 'Amount' => '200.00', 'TransactionType' => 'Redemption' ),
array( 'SiteID' => 3, 'Amount' => '500.00', 'TransactionType' => 'Deposit' ),
array( 'SiteID' => 3, 'Amount' => '200.00', 'TransactionType' => 'Deposit' ),
array( 'SiteID' => 3, 'Amount' => '200.00', 'TransactionType' => 'Reload' ),
array( 'SiteID' =>147, 'Amount' => '500.00', 'TransactionType' => 'Redemption' )
);
$totals = null;
foreach ($transactions as $t){
$amount = (float) $t['Amount'];
if (isset($totals[ $t['SiteID'] ][ $t['TransactionType'] ])){
$totals[ $t['SiteID'] ][ $t['TransactionType'] ] += (float) $amount;
} else {
$totals[ $t['SiteID'] ][ $t['TransactionType'] ] = (float) $amount;
}
}
print_r ($totals);
你是如何得到这些数据的?来自MySQL?是的,来自MySQL,但是函数不需要使用查询,它应该是一个数组。:)请提供一个工作数组。工作数组是什么意思?谢谢