如何计算总键的总和在同一阵列
问题描述:
我需要计算以下阵列,其中包含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
答
您可以循环在阵列上,增加了当您去,然后用number_format()
格式化,或者使用array_column()
提取“总”,并使用array_sum()
添加它们,并再次使用number_format()
或sprintf()
到格式化它们。
echo number_format(array_sum(array_column($array, 'total')), 2);
答
可以迭代您的阵列和求和等的所有值:
<?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'];
答
我想是这样的: -
$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);
答
您还可以尝试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'];
?>