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

您将它们作为字符串而不是双精度进行比较。

于 2012-08-07T10:15:46.620 回答