以下のコードを適用しようとすると ここから
usort($myArray, function($a, $b) {
return $a['order'] - $b['order'];
});
結果は昇順になります。
出力:
0
0
0
0
0
0.29
1.09
6.33
$ aと$ bを交換すると、1つの値を除いて降順で結果が得られます
usort($myArray, function($a, $b) {
return $b['order'] - $a['order'];
});
出力:
6.33
1.09
0
0
0
0
0.29
0
以下の順序で結果を取得したい:
6.33
1.09
0.29
0
0
0
0
0
どうすれば同じことを達成できますか?
私の最初の推測では、usortは整数の応答を期待しており、戻り値が整数でない場合は戻り値を四捨五入します。 0.29の場合、0と比較すると、結果は0.29(または-0.29)になり、0に丸められます。usortの場合、0は2つの値が等しいことを意味します。
代わりに次のようなものを試してください:
usort($myArray, function($a, $b) {
if($a['order']==$b['order']) return 0;
return $a['order'] < $b['order']?1:-1;
});
(正しい方向だと思います。順序を逆にするには、<
〜>
)
$ aと$ bを次のように入れ替えるだけです。
function sort($a, $b){
return strcasecmp($b->order, $a->order);
}
usort($myArray, "sort");
ソートされた配列を逆にすることもできます。
あなたがしたのと同じ方法で始めます:
usort($myArray, function($a, $b) {
return $a['order'] - $b['order'];
});
次のように結果を逆にします:
$myArray = array_reverse($myArray);
私はこれが古いことを知っていますが、うまくいけば誰かに役立つでしょう。降順を設定する最も簡単な方法は、以下に示すように負の1(-1)を乗算することです。テキストで私のためにうまくいきました。
function DESC($a, $b)
{
return strcmp($a["text"], $b["text"])*-1;
}
usort($results,"DESC");