문제
$ _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으로 설정됩니다.
제휴하지 않습니다 StackOverflow