2017-02-24 60 views
0

我有一個數組這樣的:排序由遞減和b ASC - 陣列(密鑰=>陣列(A,B)

$array = array($team => array('points' => x, 'runs' => y)) 

我聚集點,並與同一個隊中運行,其結果是這樣的事情:

[team1] => Array 
    (
     [points] => 12 
     [runs] => 1 
    ) 

[team2] => Array 
    (
     [points] => 11 
     [runs] => 3 
    ) 

[team3] => Array 
    (
     [points] => 11 
     [runs] => 2 
    ) 

[team4] => Array 
    (
     [points] => 8 
     [runs] => 3 
    ) 

而且我想通過運行DESC和ASC點排序它 是這樣的:

[team4] => Array 
    (
     [points] => 8 
     [runs] => 3 
    ) 
[team2] => Array 
    (
     [points] => 11 
     [runs] => 3 
    ) 
[team3] => Array 
    (
     [points] => 11 
     [runs] => 2 
    ) 
[team1] => Array 
    (
     [points] => 12 
     [runs] => 1 
    ) 

回答

0

你可以ü SE uasort(保持完整的鍵,你可以使用usort否則)用自定義比較函數:

uasort($teamArray, function($first, $second) { 
    // first preference to points 
    if ($first['points'] < $second['points']) return -1; 
    if ($first['points'] > $second['points']) return 1; 

    // points are equal, compare runs in descending order 
    if ($first['runs'] > $second['runs']) return -1; 
    if ($first['runs'] < $second['runs']) return 1; 

    // both points and runs are equal 
    return 0; 
}); 

print_r($teamArray); 
+0

我與usort努力,但我不知道如何把它:)這是工作:) –

相關問題