2011-09-15 224 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