对象数组的多次使用不按预期工作

时间:2014-09-15 04:03:54

标签: php arrays sorting object usort

我在一个对象数组上有以下usort个。我希望数组主要按第二种排序排序,并且任何关系都要按第一种排序(即,保留第一种排序的位置)。

usort($arr, function($a, $b) { return ($a->best->notout < $b->best->notout) ? 1 : (($a->best->notout > $b->best->notout) ? -1 : 0); });
usort($arr, function($a, $b) { return ($a->best->runs < $b->best->runs) ? 1 : (($a->best->runs > $b->best->runs) ? -1 : 0); });

它们都可以自己正常工作(通过评论另一个来测试),但是当一起使用时,结果是出乎意料的,只要第二种类型上的相同结果不是 默认为第一个排序返回与第二个排序相同的结果。

就像我说的第一种方式按预期工作,所以在经过大量的摆弄之后,我仍然没有找到满意的答案。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你需要一种称为稳定排序的东西,而不是。如果库中没有这样的东西,你可以自己实现它,例如使用合并排序算法