2017-10-06 76 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']; 
?>