簡體   English   中英

每小時多維數組中PHP的總和值

[英]PHP Sum value in multidimensional array per hour

我在$ result中有這個數組

Array
(
[0] => Array
    (
        [0] => Array
            (
                [buysell] => 270
                [extracthour] => 13
                [date] => 2016-06-06 13:15:00
            )

        [1] => Array
            (
                [buysell] => 7080
                [extracthour] => 14
                [date] => 2016-06-06 14:00:00
            )

        [2] => Array
            (
                [buysell] => 1680
                [extracthour] => 15
                [date] => 2016-06-06 15:00:00
            )

        [3] => Array
            (
                [buysell] => 840
                [extracthour] => 16
                [date] => 2016-06-06 16:00:00
            )

        [4] => Array
            (
                [buysell] => 1320
                [extracthour] => 17
                [date] => 2016-06-06 17:00:00
            )

    )

[1] => Array
    (
        [0] => Array
            (
                [buysell] => 240
                [extracthour] => 0
                [date] => 2016-06-07 00:00:00
            )

        [1] => Array
            (
                [buysell] => 240
                [extracthour] => 2
                [date] => 2016-06-07 02:00:00
            )

        [2] => Array
            (
                [buysell] => 480
                [extracthour] => 4
                [date] => 2016-06-07 04:15:00
            )

        [3] => Array
            (
                [buysell] => 240
                [extracthour] => 5
                [date] => 2016-06-07 05:00:00
            )

        [4] => Array
            (
                [buysell] => 360
                [extracthour] => 7
                [date] => 2016-06-07 07:00:00
            )

等等! 我想將這些值作為數組輸入變量

 Array
 (
 [0] => array
        (
             [buysell] => (sum of all values in the same extracthour)
             [extracthour] => 1

依此類推,直到獲得當日以來每個小時的購買價值為止。 有人可以解釋如何解決嗎?

這可能對您有幫助:

function sumBuySells(array $data) {
    $sums = array();
    foreach($data as $day) {
        foreach($day as $hourRow) {
            if (!array_key_exists($hourRow['extracthour'], $sums)) {
                $sums[$hourRow['extracthour']] = 0;
            }
            $sums[$hourRow['extracthour']] += $hourRow['buysell'];
        }
    }
    $result = array();
    foreach($sums as $extracthour => $buysell) {
        $result[] = ['buysell' => $buysell, 'extracthour' = $extracthour];
    }
    return $result;
}

假設整個數組在變量$new 請在下面找到代碼。 希望這可以幫助。

輸入:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [buysell] => 270
                    [extracthour] => 13
                    [date] => 2016-06-06 13:15:00
                )

            [1] => Array
                (
                    [buysell] => 7080
                    [extracthour] => 14
                    [date] => 2016-06-06 14:00:00
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [buysell] => 240
                    [extracthour] => 0
                    [date] => 2016-06-07 00:00:00
                )

            [1] => Array
                (
                    [buysell] => 240
                    [extracthour] => 2
                    [date] => 2016-06-07 02:00:00
                )

        )

)

碼:

$new = array();

$c = 1;

for($i=0;$i<count($a);$i++)
{
    $sum =0;

    for($k=0;$k<count($a[$i]);$k++)
    {
        $sum = $sum + $a[$i][$k]['buysell'];

    }
    $new[$i]['buysell'] = $sum;

    $new[$i]['extracthour'] = $c;

    $c++;
}

echo "<pre>";
print_r($new);

輸出:

Array
(
    [0] => Array
        (
            [buysell] => 7350
            [extracthour] => 1
        )

    [1] => Array
        (
            [buysell] => 480
            [extracthour] => 2
        )

)

假設您需要從輸入中獲取輸出,如下所示:

輸入:

$arr = array
    (  
    "0" => array  
        (
            "0" => array
                (
                    "buysell" => "270",
                    "extracthour" => "13",
                    "date" => "2016-06-06 13:15:00"
                ),
            "1" => array
                (
                    "buysell" => "7080",
                    "extracthour" => "13",
                    "date" => "2016-06-06 14:00:00"
                ),
            "2" => array
                (
                    "buysell" => "1680",
                    "extracthour" => "2",
                    "date" => "2016-06-06 15:00:00"
                )
        ),
    "1" => array
        (
            "0" => array
                (
                    "buysell" => 240,
                    "extracthour" => 0,
                    "date" => "2016-06-07 00:00:00"
                ),

            "1" => array
                (
                    "buysell" => 240,
                    "extracthour" => 2,
                    "date" => "2016-06-07 02:00:00"
                ),

            "2" => array
                (
                    "buysell" => 480,
                    "extracthour" => 2,
                    "date" => "2016-06-07 04:15:00"
                )
        ),
    );

輸出:-

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [buysell] => 7350
                    [extracthour] => 13
                )

            [1] => Array
                (
                    [buysell] => 1680
                    [extracthour] => 2
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [buysell] => 240
                    [extracthour] => 0
                )

            [1] => Array
                (
                    [buysell] => 720
                    [extracthour] => 2
                )
        )
)

碼:

$outputArr = array();
foreach($arr AS $key => $dataArr) {
    foreach ($dataArr AS $eachArr) {
        $outputArr[$key][$eachArr['extracthour']]['buysell'] += $eachArr['buysell'];
        $outputArr[$key][$eachArr['extracthour']]['extracthour'] = $eachArr['extracthour'];
    }
    $outputArr[$key] = array_values($outputArr[$key]);

}

如果需要單個數組,則刪除多維

$outputArr[$eachArr['extracthour']]['buysell'] += $eachArr['buysell'];
$outputArr[$eachArr['extracthour']]['extracthour'] = $eachArr['extracthour'];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM