2010-01-10 74 views
-1

$ _SESSION具有以下數據數組。如何將會話中的數據與PHP進行比較?

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) 

現在我需要比較價格並找到最高價格,以便通過以下代碼確定運費。如何從數組中找到最高價格?

在此先感謝。

+0

您計算最昂貴物品的運費? – Gumbo 2010-01-10 14:32:48

+0

爲什麼你重新發布相同的問題?該解決方案實際上是相同的:http://stackoverflow.com/questions/2037241/how-to-pull-out-data-from-session-in-php – 2010-01-10 14:37:40

+0

我問問題一步一步。它出什麼問題了? – shin 2010-01-10 14:43:20

回答

1

試試這個簡單的算法:

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

它重複了車項目並測試該項目的價格比目前的最高大,如果它是更大的更新最大。

0

雖然它假設PHP版本> = 5.3,但這應該可行。

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

鑑於起始最小的代價(0零),array_reduce將調用回調函數在$陣列[「購物」](其中每個元素也是一個數組)中的每個元素,然後調用函數將返回['price']中的$ acc或$的最大值。這個最大值將在下一次被調用時被傳遞到回調函數(作爲$ acc)。

如果array_reduce()返回NULL,$ max_price設置爲零。

相關問題