2011-04-30 48 views
0

我发现PHP手册的引用,但我的理解是非常错误的:PHP:数组>总和所有的数字元素?

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

我要总结的阵列会话中所有项目的价格。 请检查截图: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(); 

?> 

回答

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']; 
}); 
+0

周华健,非常感谢! – Gabriel 2011-04-30 07:25:45