2013-05-01 154 views
0

基於'offset'值對數組進行排序的最有效方法是什麼?基於子對象的值對數組進行排序

Array 
(
    [0] => stdClass Object 
     (
      [day] => 12 
      [month] => 2 
      [year] => 2013 
      [start] => 12:30pm 
      [end] => 3:00pm 
      [timestamp] => 2013-02-12 15:00:00 
      [id] => 2147483647 
      [offset] => -6595200 
     ) 

    [1] => stdClass Object 
     (
      [day] => 4 
      [month] => 5 
      [year] => 2013 
      [start] => 4:00pm 
      [end] => 5:00pm 
      [timestamp] => 2013-05-04 17:00:00 
      [id] => 538154873 
      [offset] => 406800 
     ) 

    [2] => stdClass Object 
     (
      [day] => 12 
      [month] => 5 
      [year] => 2013 
      [start] => 7:00am 
      [end] => 10:30am 
      [timestamp] => 2013-05-12 10:30:00 
      [id] => 1738975402 
      [offset] => 1074600 
     ) 

我想返回具有最小'偏移'值的數組中的項目。

usort()不錯的選擇嗎?當數組和對象混合時,這是如何工作的?

謝謝!

+2

爲什麼你在照顧3個物體的情況下的效率?是關於基本功能使用還是關於解決性能問題的問題? – zerkms 2013-05-01 03:25:53

+0

問題主要是關於基本功能的使用情況,但該數組可能會增長到100多個項目,並希望儘可能高效。 – coryetzkorn 2013-05-01 03:29:05

回答

4

只要你正在排序的是一個數組,它就沒有問題。你可以做

usort ($array , function($a, $b) { 
    if ($a->offset == $b->offset) { 
    return 0; 
    } 
    return ($a->offset < $b->offset) ? -1 : 1; 
}); 
+0

這很完美。謝謝戴夫! – coryetzkorn 2013-05-01 03:51:34

相關問題