Question

Le $ _SESSION a le tableau de données ci-dessous.

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 ) 

Maintenant, je dois comparer le prix et trouver le prix le plus élevé afin de déterminer les frais d'expédition avec le code suivant.

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

Comment puis-je trouver le prix le plus élevé du tableau?

Merci d'avance.

Était-ce utile?

La solution

Essayez cet algorithme simple:

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

Il itère les articles de panier et les tests si le prix de l'article est plus grand que le maximum actuel et met à jour le maximum si elle est plus grande.

Autres conseils

Cela devrait fonctionner, même si elle suppose une version de PHP> = 5.3.

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

Etant donné un prix de départ plus petit (0 zéro), array_reduce appellera la fonction de rappel à chaque élément du tableau $ [ « panier »] (où chaque élément est un tableau), puis l'appelé en fonction retournera au maximum de acc $ ou $ dans [ 'prix']. Cette valeur maximale sera alors passée dans la fonction de rappel (comme acc $) la prochaine fois qu'il est appelé.

Dans le cas où array_reduce () retourne NULL, max_price $ est mis à zéro.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top