对多维数组进行排序

时间:2011-09-15 14:28:30

标签: php

我有一个这样的数组:

Array ( 
    [0] => Array ( 
        [tag] => /nn 
        [count] => 55
    ) 
    [1] => Array ( 
        [tag] => /vb 
        [count] => 7
    )
) 

我想对它进行排序。在这个例子中,它已经像我想要的那样。按计数排序。如果是反向排序怎么办?有什么功能可以对它进行排序?

非常感谢。

4 个答案:

答案 0 :(得分:1)

$count = array();

// Obtain a list of columns
foreach ($array as $key => $row) {
    $count[$key]  = $row['count'];
}

//sort by count descending
array_multisort($count, SORT_DESC, $array);

<强> DOC

答案 1 :(得分:1)

像这样使用usort()

 usort( $array, function( $a, $b ) { 
     if ( $a['count'] == $b['count'] ) 
         return 0;

     return ( $a['count'] > $b['count'] ? -1 : 1 );
 }

如果您希望它反转订单,请反转>

答案 2 :(得分:1)

检查此代码

function aasort (&$array, $key) {
$sorter=array();
$ret=array();
reset($array);
foreach ($array as $ii => $va) {
    $sorter[$ii]=$va[$key];
}
asort($sorter);
foreach ($sorter as $ii => $va) {
    $ret[$ii]=$array[$ii];
}
$array=$ret;
}
aasort($your_array,"order");

我通常使用usort,并传递我自己的比较功能。在这种情况下,它非常简单:

function sortByOrder($a, $b) {
return $a['order'] - $b['order'];
}
usort($myArray, 'sortByOrder');

希望你能找到答案。记下我的回答并指出我,谢谢。

答案 3 :(得分:0)

我编写了一个函数here,允许您选择要排序的键。您甚至可以为二级,三级等排序指定多个键。

使用此make_comparer函数,您可以这样排序:

uasort($array, make_comparer('count'));