2009-12-18 101 views
4

我需要根據數組的數組中的一個數組對數組中的數組進行排序。如何對數組內的數組進行排序?

例如:

$data = array(array(1, "Article One", 132, 12402773, 3), 
       array(2, "Article Two", 251, 12519283, 5), 
       array(3, "Article Three", 107, 12411321, 3), 
       array(4, "Article Four", 501, 12228135, 4)); 

默認情況下,如果我打印每個數組的第二個元素:

  • 第一條
  • 第二條
  • 第三條
  • 第四條

我需要按照子數組的第三個元素降序對它進行排序。

因此,這將是這樣的:

  • 第四條
  • 第二條
  • 第一條
  • 第三條

因爲501> 251> 132> 107

有什麼建議嗎?

回答

7

我通常使用usort()此:

function compare($a, $b) { 
    return ($a[2] > $b[2]); 
} 

usort($data, 'compare'); 
+4

這是在PHP中我最喜歡的功能之一,特別是與保留鍵uasort變種。 – Dave 2009-12-18 18:57:59

+0

我同意這是要走的路。 usort/uasort視情況而定。 – mmundiff 2009-12-18 19:15:15

+0

更好的方法是使用閉包: 'usort($ data,function($ a,$ b){ return $ a [2]> $ b [2]; });' – Xethron 2015-07-21 09:00:29