문제

$ _session에는 다음 데이터 배열이 있습니다.

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 ) 

이제 다음 코드로 배송비를 결정하기 위해 가격을 비교하고 가장 높은 가격을 찾아야합니다.

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

배열에서 가장 높은 가격을 어떻게 찾을 수 있습니까?

미리 감사드립니다.

도움이 되었습니까?

해결책

이 간단한 알고리즘을 시도하십시오.

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

항목의 가격이 현재 최대보다 큰 경우 카트 항목과 테스트를 반복하고 더 큰 경우 최대 값을 업데이트합니다.

다른 팁

PHP 버전> = 5.3을 가정하지만 작동해야합니다.

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

가장 작은 가격 (0 Zero)이 주어지면 Array_Reduce는 $ array [ 'cart']의 각 요소에서 콜백 함수를 호출합니다 (각 요소도 배열이기도합니다). 또는 $ [ 'price']의 $. 이 최대 값은 다음에 호출 될 때 콜백 함수 ($ ACC)로 전달됩니다.

array_reduce ()가 null을 반환하는 경우 $ max_price가 0으로 설정됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top