Слияние перекрывающихся диапазонов в массивах PHP?

У меня есть массив в следующем формате:

array(
  0 => array(1, 5),
  1 => array(4, 8),
  2 => array(19, 24),
  3 => array(6, 9),
  4 => array(11, 17),
);

Где каждый элемент представляет собой диапазон X-to-Y. Что бы я хотел объединить перекрывающиеся диапазоны в массиве, чтобы получить что-то похожее на это:

array(
  0 => array(1, 9), // 1-5, 4-8 and 6-9 are overlapping, so they are merged
  1 => array(11, 17),
  2 => array(19, 24),
);

Каков наилучший способ сделать это?

15
задан Frxstrem 2 September 2010 в 19:28
поделиться