Domanda

Il $ _SESSION ha il seguente array di dati.

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 ) 

Ora ho bisogno di confrontare il prezzo e trovare il prezzo più alto per determinare le spese di spedizione con il seguente codice.

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

Come faccio a trovare il prezzo più alto dalla matrice?

Grazie in anticipo.

È stato utile?

Soluzione

Prova questo semplice algoritmo:

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

Si itera le voci della spesa e delle prove, se il prezzo del prodotto è più grande della corrente massima e aggiorna il massimo se è più grande.

Altri suggerimenti

Questo dovrebbe funzionare, anche se assume una versione di PHP> = 5.3.

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

Dato un prezzo minimo di partenza (0 zero), array_reduce chiamerà la funzione di richiamata ad ogni elemento di $ array [ 'carrello'] (in cui ogni elemento è un array), e quindi la chiamata in funzione restituirà la massima di $ acc o $ in [ 'prezzo']. Questo valore massimo sarà poi passata alla funzione di callback (da $ acc) la prossima volta che viene chiamato.

Nel caso in cui array_reduce () restituisce NULL, $ MAX_PRICE è impostato a zero.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top