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 - 按对象属性对对象数组进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章

php 按对象属性对对象数组进行排序。示例:查询后对Wordpress帖子进行排序

在PHP中的函数内按升序对对象数组进行排序[重复]

JQuery使用日期对对象数组进行排序[重复]

JS按数组中的“x”对对象进行排序[重复]

按对象属性对 javascript 对象数组进行排序

按属性对对象列表进行排序[重复]