PHP具有多于1点式柱排序多维通过

问题描述:

可能重复进行排序:
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

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