-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['価格']。この最大値は、次に呼び出されたときにコールバック関数に ($acc として) 渡されます。

array_reduce() が NULL を返す場合、$max_price はゼロに設定されます。

于 2010-01-10T18:59:03.210 に答える