Comment comparer les données en séance avec PHP?
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.
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.