0
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 ))
)

同じ「SiteID」と「TransactionType」に基づいて「Amount」を合計する方法。私のデータは次のように表示されます。

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"))

ありがとう。応答してください。:)

4

1 に答える 1

2

今後、作業配列フラグメントを提供してください。

$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);

これにより、次のような結果が生成されます。

配列
(
    [147] =>配列
        (
            [入金] => 2000
            [償還] => 1000
            [リロード] => 200
        )

    [150] =>配列
        (
            [入金] => 100
            [償還] => 200
        )

    [3] => 配列
        (
            [償還] => 500
            [入金] => 700
            [リロード] => 200
        )

)

PHP 通知の警告に対処できる場合は、ループを次のように短縮できます。

foreach ($transactions as $t){
    $totals[ $t['SiteID'] ][ $t['TransactionType'] ] += (float) $t['Amount'];
}
于 2012-08-10T05:04:33.337 に答える