Nasıl PHP ile oturumdaki verileri karşılaştırmak için?

2 Cevap php

$ _SESSION Aşağıdaki veri dizi var.

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 ) 

Şimdi fiyat karşılaştırma ve aşağıdaki kodla kargo ücreti belirlemek için en yüksek fiyatı bulmak gerekir.

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

Nasıl ben diziden yüksek fiyatı bulabilirim?

Şimdiden teşekkürler.

2 Cevap

Bu basit bir algoritma deneyin:

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

Öğenin fiyatı mevcut maksimum değerden daha büyük ve daha büyük ise maksimum günceller eğer sepeti öğeleri ve testler dolaşır.

Bir PHP sürümü> = 5.3 kabul etse de, bu çalışması gerekir.

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

Bir başlangıç ​​küçük fiyat (0 sıfır) göz önüne alındığında, array_reduce $ dizinin her elemanı (her eleman da bir dizidir) ['cart'] de geri çağırma işlevini çağırır ve sonra fonksiyonu denilen $ ACC maksimum dönecektir veya $ ['fiyat']. Bu maksimum değer sonra ($ ACC) geri arama işlevi için denir dahaki geçilecek.

() NULL döndürür array_reduce durumunda, $ MAX_PRICE sıfıra ayarlanır.