我想得到php中数组中所有值的总和。这里我有数组
$_SESSION['price'][];
我在数组中有一些值,每次迭代都插入到数组中。
什么时候我得到var_dump($_SESSION['price']);
数组
array(1) { [0]=> string(4) "4806" } array(1) { [0]=> string(5) "65000" } array(1) { [0]=> string(5) "44005" } array(1) { [0]=> string(6) "215668" } array(1) { [0]=> string(4) "7896" }
现在我要计算每个值,例如4806
+ 65000
+ 44005
+ 215668
+ 7896
我该怎么做?
我尝试了echo "totalsum".array_sum($_SESSION['cart_total']);
但我得到了输出
totalsum4806totalsum65000totalsum44005totalsum215668totalsum7896
答案 0 :(得分:3)
您可以像{/ p>一样使用array_sum
echo array_sum(call_user_func_array('array_merge', $arr));
或者对于PHP> 5.5.0 您也可以像{/ p>一样使用array_column
echo array_sum(array_column($arr,0));
<强>输出:强>
337375
答案 1 :(得分:1)
显然你有一个二维数组。 $_SESSION['price']
的每个元素都是一个包含一个元素的数组,而不是一个价格。我不确定你为什么这样做,但是你需要写一个循环来访问它们。
$sum = 0;
foreach ($_SESSION['price'] AS $subarray) {
$sum += $subarray[0];
}
也许您应该修复创建会话变量的任何内容,以使其成为一维数组。子阵列似乎没有任何用途。
答案 2 :(得分:0)
我认为您使用$_SESSION['cart_total']
,但您必须使用$_SESSION['price']
。代码如下所示
$a = array("price" => array("4806", "65000", "44005", "215668", "7896"));
var_dump($a["price"]);
echo "<br>";
echo "totalsum = " . array_sum($a["price"]);
输出如下所示
array(5) { [0]=> string(4) "4806" [1]=> string(5) "65000" [2]=> string(5) "44005" [3]=> string(6) "215668" [4]=> string(4) "7896" }
totalsum = 337375
OR
$a["price"][] = array("4806");
$a["price"][] = array("65000");
$a["price"][] = array("44005");
$a["price"][] = array("215668");
$a["price"][] = array("7896");
$sum = 0;
foreach ($a["price"] AS $price) {
$total += $price[0];
}
echo $total;
答案 3 :(得分:0)
试试这个:我操纵了你的数组
$arr = $_SESSION['price'];
foreach($arr as $key => $val)
{
$newVal[] = $val[0];
}
print_r(array_sum($newVal)); //output is 337375
答案 4 :(得分:0)
通常,你会对这样的数组求和:
$sum = array_sum($_SESSION['price']);
然而,由于两个原因,这对你不起作用:
"
)。 (好的,array_sum
可能会将它转换为整数,所以在实践中这可能不是问题。)array(1) { [0]=>
)。如果你没有理由想要这样做,那么最简单的解决方案就是在创建数组时修复这两件事,所以不是嵌套的字符串数组,而是有一个平面数组整数。
如果出于某种原因无法做到这一点,你可以这样总结:
$sum = 0;
foreach($_SESSION['price'] as $e) {
// Convert the first element of the sub array to integer and add it to the $sum.
$sum += (int)$e[0];
}