2011-04-28 121 views
1

嘿家伙。应该很简单,因为我的情况稍有不同,所以在其他问题上找不到合适的答案。按键值排序阵列

我有一个数组,像这样:

Array 
(
    [0] => Array 
     (
      [record_id] => 21 
      [quality] => 3 
     ) 

    [1] => Array 
     (
      [record_id] => 20 
      [quality] => 3 
     ) 

    [2] => Array 
     (
      [record_id] => 19 
      [quality] => 3 
     ) 

    [3] => Array 
     (
      [record_id] => 18 
      [quality] => 2 
     ) 

    [4] => Array 
     (
      [record_id] => 17 
      [quality] => 3 
     ) 

) 

我需要能够为了数组由最高到最低(关于quality键)按升序或降序(当一个模式有被选中),所以例如我需要它来订购一个数组并返回它的顺序,例如

function order_array($array, $order = 'asc') 
{ 
    if($order == 'asc') 
    // order the array from lowest to highest 

    if($order == 'desc') 
    // order the array from highest to lowest 
} 

干杯。

回答

4

检查usort功能

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

$a = array(3, 2, 5, 6, 1); 

usort($a, "cmp"); 
+0

但是,今年让我升序或降序排列? – MacMac 2011-04-28 20:51:51

+0

这将订购DESC,以获得ASC订单,只需更改退货($ b <$ a)? -1:1; – mdaguerre 2011-04-28 20:56:50

1

使用功能usort

usort($array, "my_custom_sort_function"); 
function my_custom_sort_function($a, $b) { 
    return $a['quality'] - $b['quality']; 
}