2017-10-06 117 views
0

我需要計算以下陣列,其中包含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"; 

所以總必須處於相同的格式從查詢

10.70

回答

4

您可以循環在陣列上,增加了當您去,然後用number_format()格式化,或者使用array_column()提取「總」,並使用array_sum()添加它們,並再次使用number_format()sprintf()到格式化它們。

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

可以迭代您的陣列和求和等的所有值:

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

結果:陣列(2){[ 「總」] =>浮動(10.7)[ 「SKU」] = > INT(11696)}

單總和輸出:

echo $result['total']; 
1

我想是這樣的: -

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

您還可以嘗試array_walk_recursive()這樣https://eval.in/875555

$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']; 
?>