PHP: Array >将所有数字元素相加


PHP: Array > Sum all the numeric elements?

我在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();
?>
$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'];
});