2011-09-15 184 views
0

我有一个这样的阵列:排序多维数组

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

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

非常感谢。

+0

有'sort()'。 –

回答

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'); 

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

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

0

我已经写了一个功能here,允许您选择要使用排序哪个键。你甚至可以为二级,三级等排序指定多个键。

有了这个make_comparer功能,您将排序是这样的:

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

使用usort()这样的:

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

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

反转>,如果你想让它颠倒顺序。

+0

ahhhh!错位'''! – Neal

+0

哎呦!固定0 :) – Rijk