2017-02-24 41 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努力,但我不知道如何把它:)这是工作:) –

相关问题