以下のロジックで次の配列をソートする必要があります: 'score'が同じ場合、 'time'を使用して比較します。上記アレイ内usortと宇宙船オペレータを使用して多次元配列を正しく並べ替える
$user_scores = [ 82 => [ 'score' => 1, 'time' => 6.442 ],
34 => [ 'score' => 1, 'time' => 5.646 ],
66 => [ 'score' => 3, 'time' => 1.554 ]
]
「キーは」私はソートされた配列に保存する必要が「user_ids」、次のとおり次のように配列されます。私の最高の試みは、これまでのところ、以下のようである - 明らかに
$result = usort($user_scores, function ($a, $b) {
if ($a['score'] == $b['score']) {
return $a['time'] == $b['time'];
}
return $a['score'] <=> $b['score'];
});
、これは動作していない、と私はすべてのキーとの$ user_scores配列ではなくuser_ids(82の0、1、2、34に置き換え取得しています66)。ソートも機能していません。上記アレイの場合
、私の所望の出力は$ user_scores配列のようになります。あなたはどのように(それが理にかなっている場合)宇宙船演算子を使用して、この仕事をするために私に言うことができれば
$user_scores = [ 34 => [ 'score' => 1, 'time' => 5.646 ],
82 => [ 'score' => 1, 'time' => 6.442 ],
66 => [ 'score' => 3, 'time' => 1.554 ]
]
は本当に感謝します。あなたの時間をありがとう、私はあなたの応答を楽しみにしています。
--- --- UPDATE
必要なソートロジックはこのようなものです:
- より高いスコアは、より高いランクになります。
- 時刻が高いほど、ランクが低くなります。
これは基本的にクイズの結果をソートしています。時間の最も短いトップスコアラーがトップになります。スコアが低く、時間が長いものは最下位に位置します。
時間が時間を意味= 5.64599999999999990762944435118697583675384521484375 –
から5.646は必ずそれをここでチェックしhttps://eval.in/809606 –
が、 print_r()を使用してhttps://eval.in/809610を使用してもOKです –