2015-10-08 79 views
-1

我想在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

第一操縱你的陣列。 – aldrin27

+0

將你的值變成int/float/double,你應該看到它更好用:) – Epodax

+0

看起來你有一個2維數組。 – Barmar

回答

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

試試這個:我操縱你的陣列

$arr = $_SESSION['price']; 

foreach($arr as $key => $val) 
{ 
    $newVal[] = $val[0]; 
} 
print_r(array_sum($newVal)); //output is 337375 
1

顯然你有一個2維數組。 $_SESSION['price']的每個元素都是一個包含一個元素的數組,而不是價格。我不知道你爲什麼這樣做,但你需要編寫一個循環來訪問它們。

$sum = 0; 
foreach ($_SESSION['price'] AS $subarray) { 
    $sum += $subarray[0]; 
} 

也許你應該修復無論是創建會話變量,因此它使它成爲一維數組。子陣列似乎不起任何作用。

3

您可以簡單地使用array_sum等作爲

echo array_sum(call_user_func_array('array_merge', $arr)); 

或爲PHP>5.5。0您還可以使用array_column等作爲

echo array_sum(array_column($arr,0)); 

輸出:

337375 

Demo

0

通常情況下,你會總結一個這樣的數組:

$sum = array_sum($_SESSION['price']); 

然而,這不會爲你工作的原因有兩個:

  1. 您的值不會存儲爲整數,但作爲字符串(因此在var轉儲")。 (好的,array_sum可能會將它轉換爲一個整數給你,所以在實踐中這可能不是問題。)
  2. 你的值不是作爲數組中的元素存儲的,而是作爲某種原因作爲子數組中的單個元素因此var轉儲中的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]; 
}