PHP - 按对象属性对对象数组进行排序[重复]
Posted
技术标签:
【中文标题】PHP - 按对象属性对对象数组进行排序[重复]【英文标题】:PHP - Sorting an array of objects by object property [duplicate] 【发布时间】:2014-09-17 08:22:30 【问题描述】:我相信你很好。
我想尝试按对象的 score 属性对该数组进行排序。下面是数据示例(print_r)。
Array
(
[0] => stdClass Object
(
[device] => 352454530452548
[reg] => MAM 432A
[distance] => 823.36
[ha_points] => 1
[hb_points] => 235
[hc_points] => 7.5
[idling_points] => 111.5
[speeding_points] => 168
[total] => 523
[score] => 68.239895064127
)
[1] => stdClass Object
(
[device] => 3518020541565265
[reg] => SM** ***
[distance] => 851.07
[ha_points] => 14
[hb_points] => 136
[hc_points] => 6
[idling_points] => 50
[speeding_points] => 336
[total] => 542
[score] => 68.957730856451
)
分数可以是 0 到 100 之间的任何值,我想将它们按降序排序(最大的在前?)。更复杂的是,尽管机会非常渺茫,但可能有两个相同的分数,在这种情况下,哪个是第一个并不重要。
有什么想法吗?
提前致谢,
保罗
【问题讨论】:
【参考方案1】:一个简单的usort
就可以完成这项工作。
$arrData = array(/* ... */);
usort($arrData, function($a, $b)
return $a->score < $b->score ? 1 : -1;
);
【讨论】:
你需要返回一个整数1,而不是布尔值! 太棒了,虽然我不得不将返回值更改为 $a->score score 因为它是升序的。非常感谢欢呼! @deceze:谢谢,忘记了。谁添加了-
- 它无法正常工作,因为这些是浮点数,并且差异将被四舍五入。
真正关于花车。您仍然应该返回 三个 可能的返回状态,而不仅仅是 2 个!以上是关于PHP - 按对象属性对对象数组进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章