如何将会话中的数据与PHP进行比较?

时间:2010-01-10 14:31:28

标签: php highest

$ _SESSION具有以下数据数组。

Array (
[totalprice] => 954
[cart] => Array (
      [115] => Array (
      [name] => MÅNESKINN
      [price] => 268.00
      [count] => 1 )
[80] => Array (
      [name] => DELFINLEK  
      [price] => 268.00
      [count] => 1 )
[68] => Array (
      [name] => OPPDAGELSEN
      [price] => 418.00
      [count] => 1 ) )
[shipping] => 65 ) 

现在我需要比较价格并找到最高价格,以便通过以下代码确定运费。

...
$shippingprice = 25.0;    
if ( $priceincart > 268 ){
   $shippingprice = 65.0;
}
...
$_SESSION['shipping'] = $shippingprice;

如何从阵列中找到最高价?

提前致谢。

2 个答案:

答案 0 :(得分:1)

尝试这个简单的算法:

$max = 0;
foreach ($_SESSION['cart'] as $item) {
    if ($item['price'] > $max) {
        $max = $item['price'];
    }
}

它迭代购物车商品并测试商品的价格是否大于当前最高价格,如果价格更大则更新最大价格。

答案 1 :(得分:0)

这应该有效,尽管它假定PHP版本> = 5.3。

$max_price = array_reduce($array['cart'], function($acc, $in) { 
    return max($acc, $in['price']); 
}, 0) or $max_price = 0;

给定起始最小价格(0为零),array_reduce将在$ array ['cart']的每个元素处调用回调函数(其中每个元素也是一个数组),然后被调用的函数将返回最大值$ acc或$ in ['price']。然后,这个最大值将在下次调用时传递给回调函数($ acc)。

如果array_reduce()返回NULL,则$ max_price设置为零。