簡體   English   中英

如何計算同一數組中總鍵的總和

[英]how to calculate sum of total key in same array

我需要計算以下包含4個不同子數組的數組中的總鍵

Array
(
    [0] => Array
        (
            [total] => 4.2
            [sku] => 4321
        )

    [1] => Array
        (
            [total] => 2
            [sku] => 2456
        )

    [2] => Array
        (
            [total] => 3
            [sku] => 2245
        )

    [3] => Array
        (
            [total] => 1.5
            [sku] => 2674
        )

)

我是直接使用mysql計算出來的,但我更喜歡使用php

$sql = "SELECT SUM(CAST(IFNULL(total,0) AS DECIMAL(10,2))) FROM trans WHERE trans.userid = :userid";

因此total必須采用與查詢相同的格式

10.70

您可以遍歷數組,隨便添加,然后使用number_format()進行格式化,或者使用array_column()提取“總計”,然后使用array_sum()進行添加,然后再次使用number_format()sprintf()格式化它們。

echo number_format(array_sum(array_column($array, 'total')), 2);

我猜是這樣的:

  $array = Array
    (
        [0] => Array
            (
                [total] => 4.2
                [sku] => 4321
            )

        [1] => Array
            (
                [total] => 2
                [sku] => 2456
            )

        [2] => Array
            (
                [total] => 3
                [sku] => 2245
            )

        [3] => Array
            (
                [total] => 1.5
                [sku] => 2674
            )

    );
   $total = 0;

   foreach ($array as $key => $value) {
        $total += $value['total'];
   }

   print_r($total);

您可以迭代數組並匯總所有值,例如:

<?php 
$array = array(
    array(
    'total' => 4.2,
    'sku' => 4321
    ),
    array(
    'total' => 2,
    'sku' => 2456
    ),
    array(
    'total' => 3,
    'sku' => 2245
    ),
    array(
    'total' => 1.5,
    'sku' => 2674
    ),
);


$result = array('total' => 0,'sku' => 0);
foreach($array as $key => $value) {
    $result['total'] += $value['total'];
    $result['sku'] += $value['sku'];
}
var_dump($result);

結果:array(2){[“” total“] => float(10.7)[” sku“] => int(11696)}

對於單個總和輸出:

echo $result['total'];

您也可以像這樣https://eval.in/875555嘗試使用array_walk_recursive()

$input = [your_2d_array_goes_here];
$final = array();    
array_walk_recursive($input, function($item, $key) use (&$final){
    $final[$key] = isset($final[$key]) ?  $item + $final[$key] : $item;
});

print '<pre>';
print_r($final);
print '</pre>';
print $final['total'];
?>

暫無
暫無

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

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