2009-12-18 102 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