2012-03-04 67 views
0

可能重複進行排序:
How do I sort a multidimensional array in php
Sorting a multidimensional array in PHP?PHP具有多於1點式柱排序多維通過

如何可以由高,中排序的陣列(見下文),低?

# Generate random events 
$severity = array('high','medium','low'); 
$events = array(); 
for ($i=1,$n=10;$i<=$n;$i++) { 
     $events["Country{$i}"] = array(
       'high'   =>    rand(0,100), 
       'medium'  =>    rand(0,100), 
       'low'   =>    rand(0,100), 
       'total'   =>    'X' 
     ); 
} 

我意味着在底線我將有一個排序後的數組,其保持由高,則介質的最高值排序的所有的countryX,然後低 - 所有在1個大陣列。

嘗試了不同的方法,但顯示正確的結果。

+0

閱讀[在array_multisort]的文件(http://php.net/manual/en/function.array-multisort.php) – hackartist 2012-03-04 21:10:22

+0

找到了解決基於在array_multisort文檔,可以在http://引擎收錄.com/taMH4Qni – Broshi 2012-03-05 09:07:52

回答

0
function sillySort($a, $b) { 
    if ($a['high'] > $b['high']) { 
     return -1; 
    } else if ($a['high'] < $b['high']) { 
     return 1; 
    } else { 
     if ($a['medium'] > $b['medium']) { 
      return -1; 
     } else if ($a['medium'] < $b['medium']) { 
      return 1; 
     } else { 
      if ($a['low'] > $b['low']) { 
       return -1; 
      } else if ($a['low'] < $b['low']) { 
       return 1; 
      } else { 
       return 0; 
      } 
     } 
    } 
} 

uksort($events, 'sillySort'); 
+0

不工作,$ events是一個多維數組,它不能讀取uksort中的值。 – Broshi 2012-03-05 08:48:16

+0

找到了一個基於array_multisort文檔的解決方案,可在http://pastebin.com/taMH4Qni上找到 – Broshi 2012-03-05 09:08:00

+0

我用你的代碼測試了它,它確實工作.... – Ing 2012-03-05 11:19:56