0

usort 関数を使用して配列をソートしています。ループはソートと同様に(ある程度)正しく機能していますが、小数点以下の桁数などに関して何かを見逃しているようです。私の機能は以下のとおりです

usort($this->view->blogs, 'comparison');

そして、ここに関数があります。関数呼び出しは正しく機能し、並べ替えられたデータが返されていることがわかります

function comparison($a, $b)
{
    return strcmp($a->cost_per_blog, $b->cost_per_blog);
}

問題は、実際の並べ替えロジックにあります。たとえば、以下のようなリストが返されます

0.09724
0.58344
1.16688
12.05776
120.5776
126.60648
13.22464
132.63536
138.66424
168.80864
18.08664
18.08664
18.67008
180.8664
19.25352
21.10108
22.26796

パターンは続きます... 3 桁の数字の並べ替えを考慮していないようです。私は何が欠けているのか考えられないようです。どんな助けでも大歓迎です。

4

2 に答える 2

2

文字列を比較するのではなく、数値を比較してください。

return $a->cost_per_blog - $b->cost_per_blog;
于 2012-08-07T10:14:44.743 に答える
1

double としてではなく文字列として比較します。

于 2012-08-07T10:15:46.620 に答える