-1

$_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;

如何从数组中找到最高价格?

提前致谢。

4

2 回答 2

1

试试这个简单的算法:

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

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

于 2010-01-10T14:34:40.810 回答
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 设置为零。

于 2010-01-10T18:59:03.210 回答