2013-05-01 9 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

+0

Вопрос в основном об использовании основных функций, но массив может вырасти до 100 предметов и должен быть максимально эффективным. – coryetzkorn

ответ

4

Пока вы сортируете массив, это нормально. Вы можете сделать:

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

Это прекрасно. Спасибо, Дэйв! – coryetzkorn

Смежные вопросы