Frage

Das $ _SESSION hat folgendes Datenfeld.

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 ) 

Jetzt muß ich den Preis vergleichen und den höchsten Preis finden, um die Versandkosten mit dem folgenden Code zu bestimmen.

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

Wie kann ich den höchsten Preis aus dem Array finden?

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Versuchen Sie diesen einfachen Algorithmus:

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

Es iteriert die Wagenpositionen und Testergebnisse, wenn der Preis des Artikels größer als das aktuelle Maximum ist und aktualisiert die maximal, wenn es größer ist.

Andere Tipps

Das sollte funktionieren, obwohl es eine PHP-Version geht davon aus> = 5,3.

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

Bei einem Start kleinster Preis (0 Null), wird array_reduce die Callback-Funktion ruft an jedem Elemente von $ array [ ‚Warenkorb‘] (wobei jedes Element ist auch ein Array), und dann wird die in Funktion aufgerufen wird die maximale Rück von $ acc oder $ in [ 'Preis']. Dieser Maximalwert wird dann in an die Callback-Funktion übergeben werden (wie $ acc) das nächste Mal aufgerufen wird.

Für den Fall, dass array_reduce () gibt NULL, $ MAX_PRICE auf Null gesetzt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top