Задать вопрос
@gibigate

Как разделить массив по заданному критерию?

Здравствуйте,

Появилась задачка, ищу изящное решение с минимумом кода.
  • Вопрос задан
  • 152 просмотра
Подписаться 1 Простой Комментировать
Ответ пользователя Rsa97 К ответам на вопрос (4)
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
function intervals($arr) {
  $start = -1;
  $end = -1;
  $result = [];
  foreach ($arr as $val) {
    if ($start === -1) {
      $start = $val;
      $end = $val;
    } elseif ($val === $end + 1) {
      $end = $val;
    } else {
      $result[] = ['start' => $start, 'end' => $end];
      $start = $val;
      $end = $val;
    }
  }
  if ($start !== -1) {
    $result[] = ['start' => $start, 'end' => $end];
  }
  return $result;
}

print_r(intervals([0,1,2,3,6,7,8,9,12,13,14,15]));

// Array (
//     [0] => Array (
//             [start] => 0
//             [end] => 3
//     )
//     [1] => Array (
//             [start] => 6
//             [end] => 9
//      )
//     [2] => Array (
//             [start] => 12
//             [end] => 15
//      )
// )
Ответ написан