2011-08-02 6 views
3

最高点の配列を並べ替えるにはどうすればよいですか?最高点の配列を並べ替える

例:ポイントによって

$sale = array(); 

Array 
(
    [UserA] => Array 
     (
      [unsuccessful] => 0 
      [Points] => 31 
      [procesing] => 4 
     ) 
    [UserB] => Array 
     (
      [unsuccessful] => 4 
      [Points] => 200 
      [procesing] => 1 
     ) 
    [UserC] => Array 
     (
      [unsuccessful] => 3 
      [Points] => 150 
      [procesing] => 55 
     ) 
) 

ソート、それは順番にする必要があります:ユーザーB、よびUserC、ユーザーA

答えて

7
uasort($array, function($a, $b) { 
    return $b['Points'] - $a['Points']; 
}); 

uasort()usort()機能を指定する必要があり、コールバックを取るまさに1になります他のアイテムよりも大きいアイテムまたは小さいアイテム。この関数が0を返した場合、項目は等しい。正の数を返した場合、2番目の項目は最初の項目よりも大きくなります。そうでなければ、最初の項目は2番目の項目よりも大きい。

uasort()usort()の違いは、usort()ではなく、uasort()もキーを保持していることです。配列をソートできる他の方法については、the comparison of array sorting functionsを参照してください。

+0

あなたは '返す$ [ 'ポイント']使用して実際の比較簡素化することができます - $ bの[ 'ポイント']'。 –

+0

@Stefan Gehrig、素晴らしいアイデア、ありがとう。結果は降順でソートされるので、 '$ b - $ a'です。 – rid

+0

絶対に...私の悪い。 –