2011-11-01 78 views
0

可能重複:
How to sort arrays inside an array?
Sort an array by a child array's value in PHPPHP:由子值排序陣列

我有一個數組,看起來像這樣:

[0] => Array { 
    [ID] => 1651, 
    [DESCR] => "blabla", 
    [SORTNR] => 1, 
}, 
[1] => Array { 
    [ID] => 456, 
    [DESCR] => "bleble", 
    [SORTNR] => 3, 
}, 
[2] => Array { 
    [ID] => 158, 
    [DESCR] => "bliblablub", 
    [SORTNR] => 2, 
}, 

現在我想要使用值對子排列進行排序降序,所以在這裏它應該看起來像這樣:

[1] => Array { 
    [ID] => 456, 
    [DESCR] => "bleble", 
    [SORTNR] => 3, 
}, 
[2] => Array { 
    [ID] => 158, 
    [DESCR] => "bliblablub", 
    [SORTNR] => 2, 
}, 
[0] => Array { 
    [ID] => 1651, 
    [DESCR] => "blabla", 
    [SORTNR] => 1, 
}, 

我該如何在PHP中正確執行該操作?我現在嘗試了一些東西四個小時,我找不到任何好的解決方案....

Thx求助!改編自PHP uasort() manual page

回答

2
function cmp($a, $b) { 
    if ($a['SORTNR'] == $b['SORTNR']) { 
    return 0; 
    } 
    return ($a['SORTNR'] < $b['SORTNR']) ? -1 : 1; 
} 

uasort($arr, 'cmp'); 

代碼如果要排序的子值是可變的,你也可以考慮使用array_multisort()。請參閱示例3:http://php.net/array_multisort

+0

爲簡潔起見,您可以在cmp()函數中執行'返回$ a ['SORTNR'] - $ b ['SORTNR']'' – Vikk