PHP:数组>求和所有数字元素?

时间:2011-04-30 07:05:40

标签: php arrays session sum

我在PHP手册中找到了一个参考,但我的解释非常错误:

$total = (sum ( array $_SESSION['list'][$item]['price'] ));

我想总结数组SESSION中所有项目的价格。 请查看屏幕截图:http://img684.imageshack.us/img684/6070/20110430010324.jpg

这是我正在使用的代码:

    <?php

session_start();

//Getting the list
 $_SESSION['list'] = isset($_SESSION['list']) ? $_SESSION['list'] : array();    

 //stock    
 $products = array(      
     'Pineaple' => 500, 'Banana' => 50, 'Mango' => 150,       
     'Milk' => 500, 'Coffe' => 1200, 'Butter' => 300,      
     'Bread' => 450, 'Juice' => 780, 'Peanuts' => 800,      
     'Yogurt' => 450, 'Beer' => 550, 'Wine' => 2500,    
 );    



 //Saving the stuff    
 $new_item = array(      
     'item' => $_POST['product'],       
     'quantity' => $_POST['quantity'],     
     'code' => $_POST['code'],      
     'price' => $products[$_POST['product']] * $_POST['quantity'],    

 );



$new_product = true;    
foreach($_SESSION['list'] as $key => $item) {      
    if ($item['item'] == $new_item['item']) {        
    $_SESSION['list'][$key]['quantity'] += $new_item['quantity'];        
    $_SESSION['list'][$key]['price'] = $products[$new_item['item']] * $new_item['quantity'];        
    $new_product = false;
    }    
}   

if ($new_product) {      
    $_SESSION['list'][] = $new_item;        
}    

//listing    
echo  "<b>SHOPPING LIST</b></br>";    
foreach($_SESSION['list'] as $key => $item) {       
    echo 'Product .'. $key. ' '. $item['item'], ' ', $item['quantity'], ' units: ', $item['price']. '<br />';    
    }


echo "</br> <a href='index.html'>Return to index</a> </br>";

//Printing session
var_dump($_SESSION);

//session_destroy();

?>

1 个答案:

答案 0 :(得分:2)

$total = 0;
foreach($_SESSION['list'] as $item) {
  $total += $item['price'];
}

或者如果您更喜欢功能样式(PHP 5.3):

$total = array_reduce($_SESSION['list'], function($a, $b) {
  return $a['price'] + $b['price'];
});