2014-07-25 128 views
-2

我相信你很好。PHP - 按对象属性排列对象数组

我想尝试按对象的评分属性对此数组进行排序。以下是数据的一个例子(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之间的任何值,我想按降序排列(最大的第一个?)。为了使事情更复杂,虽然机会非常渺茫,但有可能得到两个相同的分数,在这种情况下,哪一个并不重要。

任何想法?

由于提前,

保罗

回答

0

一个简单usort将做的工作。

$arrData = array(/* ... */); 
usort($arrData, function($a, $b) { 
    return $a->score < $b->score ? 1 : -1; 
}); 
+1

你需要返回一个整数< 1, 0 or > 1,不是布尔! – deceze

+0

辉煌,工作虽然我不得不改变回报为$ a->得分< $b->得分,因为它是升序。非常感谢欢呼! – Smithey93

+0

@deceze:谢谢,忘了那个。无论谁加了'-',它都不能正常工作,因为它们是浮动的,而且它们的区别将被舍入。 –