Pregunta

El $ _SESSION tiene la siguiente matriz de datos.

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 ) 

Ahora tengo que comparar el precio y encontrar el precio más alto con el fin de determinar los gastos de envío con el siguiente código.

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

¿Cómo puedo encontrar el precio más alto de la matriz?

Gracias de antemano.

¿Fue útil?

Solución

Trate este sencillo algoritmo:

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

Se itera los artículos de la compra y pruebas si el precio del producto es mayor que la corriente máxima y actualiza el máximo si es más grande.

Otros consejos

Esto debería funcionar, aunque se supone una versión de PHP> = 5.3.

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

Dado un precio más pequeño de partida (0 cero), array_reduce llamará a la función de devolución de llamada en cada elemento de $ array [ 'carrito'] (en la que cada elemento es también una matriz), y luego la llamada de la función devolverá el máximo de $ o $ acc en [ 'precio']. Este valor máximo se pasará entonces a la función de devolución de llamada (como $ acc) la próxima vez que se llama.

En el caso de que array_reduce () devuelve NULL, $ MAX_PRICE se establece en cero.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top