2010-03-15 149 views
0

我正在爲我們的辦公室工作在顯示屏上,而且我似乎無法想出一種很好的方法來查找一組數據中的最大數值在二維陣列中。我看過使用max()和asort(),但他們似乎不應付二維數組。在二維數組中查找並標記三個值中的最大值

我通過我們的mysql類返回我的數據,所以行被返回到一個二維數組中。

Array(
[0] => Array(
    [am] => 12, 
    [sales] => 981), 
[1] => Array(
    [am] => 43, 
    [sales] => 1012), 
[2] => Array(
    [am] => 17, 
    [sales] => 876) 
) 

我需要輸出一個類時,在我的表中爲銷售值最高的AM進行數據處理。沒有比較他們全部在> if語句。我試圖在數組上獲取max(),但是它返回一個數組,因爲它在維度中查找。將它指向特定維時,它將返回鍵而不是值。

我想我可以asort()數組,並彈出最高價值,將其存儲在一個變量,然後與我的foreach()循環比較,但這似乎有困難排序跨兩個維度。

最後,我想我可以foreach()的值,每次比較它們與前一個,直到我發現最大的。然而,這種方法意味着存儲每個值,幸運的是隻有三個值,但是再次與它們進行比較。

當然,必須有一個簡單的方法來實現這一點,短轉換成一維數組,然後做一個asort()呢?

+1

我知道這是不是你正在尋找的答案,但不能您選擇通過SQL MAX值?除此之外,我認爲你唯一的選擇是通過數組將最大值存儲在變量循環中,如果當前值更大,則取代最大值。如果您有興趣,我會提供一個答案來表明這一點。 – plod 2010-03-15 10:48:06

+0

我可以使用sql來選擇它,但我使用帳戶經理ID的順序來保持用戶的正確順序。因爲每個AM都有三個統計數據,所以我使用它來確保當我將它們循環出來時,它們都處於正確的順序!輕微的hax也許;) – 2010-03-15 11:04:59

回答

2
<?php 
function customSort($a, $b) 
{ 
    if($a['sales'] == $b['sales']) 
     return 0; 
    else 
     return $a['sales'] < $b['sales'] ? -1 : 1; 
} 

usort($array, 'customSort'); 
?> 

是我會做什麼

+0

+1但數組鍵需要用引號括起來,否則PHP會將它們評估爲常量。 – 2010-03-15 11:00:01

+0

好點!完成 – Kolky 2010-03-15 11:03:20

+0

太好了,謝謝!多麼方便的功能:D – 2010-03-15 11:10:51

相關問題