2011-04-28 252 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']; 
}