Pergunta

A $ _SESSION tem a seguinte matriz de dados.

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 ) 

Agora eu preciso comparar o preço e encontrar o preço mais elevado, a fim de determinar a taxa de envio com o seguinte código.

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

Como posso encontrar o preço mais alto do array?

Agradecemos antecipadamente.

Foi útil?

Solução

Tente este algoritmo simples:

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

Ele itera os itens carrinho e testes, se o preço do item é maior do que a corrente máxima e atualiza o máximo se for maior.

Outras dicas

Isso deve funcionar, embora ele assume uma versão PHP> = 5.3.

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

Dado um começando menor preço (0 zero), array_reduce vai chamar a função de retorno de chamada para cada elemento de US $ array [ 'carrinho'] (onde cada elemento é também um array), e então a chamada em função irá retornar o máximo de US $ acc ou US $ em [ 'preço']. Este valor máximo será então passado para a função de retorno (quanto $ acc) da próxima vez que for chamado.

No caso de array_reduce () retorna NULL, $ MAX_PRICE está definido para zero.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top