2017-02-16 98 views
2

如何用<=>(飛船運營商)重寫這個uasort函數?uasort與<=>(飛船運營商)

uasort($hits, function($a, $b) { 
    if($a['total'] == $b['total']) { 
     if($a['vat'] == $b['vat']) { 
      return 0; 
     } else { 
      return ($a['vat'] > $b['vat']) ? -1 : 1; 
     } 
    } else { 
     return ($a['total'] > $b['total']) ? -1 : 1; 
    } 
} 

回答

3
return $b['total'] <=> $a['total'] ?: $b['vat'] <=> $a['vat']; 

如果總相等,<=>回報0,這是falsey,所以?:運營商將返回增值稅比較的結果來代替。第一個非0結果將被返回。

+1

這是一個很好用的聚結操作的,雖然你應該改變操作數的上飛船的人 – emiliopedrollo

0

這應該工作

uasort($hits, function($a, $b){ 
    if($a['total'] == $b['total']){ 
     return ($b['vat'] <=> $a['vat']); 
    } 
    else{ 
     return ($b['total'] <=> $a['total']); 
    } 
}); 
3

喜歡的東西

uasort($hits, function($a, $b){ 
    return [$b['total'], $b['vat']] <=> [$a['total'], $a['vat']]; 
}); 
+1

稍有模糊,但很好的解決方案的順序。 – deceze