2015-10-08 4 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

Похоже, у вас есть двумерный массив. – 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 

ИЛИ

$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

Очевидно, у вас есть двумерный массив. Каждый элемент $_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. Ваши значения не хранятся в виде целых чисел, но как строки (отсюда " в вар свалка). (OK, array_sum может преобразовать его в целое число для вас, так что, возможно, это не проблема на практике.)
  2. Ваши значения не хранятся как элементы в массиве, а по какой-то причине как отдельные элементы в вспомогательном массиве (следовательно, array(1) { [0]=> в дампе var).

Если нет причин, по которым вы хотели бы иметь это, самым простым решением было бы просто исправить эти две вещи, когда будет создан массив, поэтому вместо вложенного массива строк у вас есть плоский массив целых чисел.

Если это не представляется возможным по каким-то причинам, вы можете суммировать это следующим образом:

$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]; 
} 
Смежные вопросы