Разбиение массива на группы на основе значений

Используя PHP, я пытаюсь разбить массив на несколько массивов на основе групп значений. Группы основаны на значениях от 1 до 5. Но вот тяжелая часть …

Мне нужно пройти через массив и поместить первый набор значений между 1 и 5 в свой собственный массив, затем следующий набор значений, которые находятся между 1 и 5 в их собственном массиве и т. Д.

Но каждая группа НЕ будет включать в себя 1,2,3,4,5. Некоторые группы могут быть случайными.

Примеры:

1,1,2,2,3,4,5 – это будет группа

1,2,3,4,4,4 – это будет группа

1,2,3,3,5 – это будет группа

2,2,3,3,5 – это будет группа

Поэтому я не могу просто проверить конкретные цифры.

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 1 [6] => 2 [7] => 3 [8] => 4 [9] => 4 [10] => 1 [11] => 1 [12] => 3 [13] => 4 [14] => 5 ) 

Есть идеи?

Related of "Разбиение массива на группы на основе значений"

Я бы просто проверить, больше ли текущее значение, чем предыдущее значение, и если да, начните новую группу.

 $groups = array(); $groupcount = 1; foreach( $array as $key=>$value ) { if( $key > 0 ) // there's no "previous value" for the first entry { if( $array[$key] < $array[$key-1] ) { $groupcount = $groupcount + 1; } } $group[groupcount][] = $value; } 

Это то, что вы ищите?

 $groups = array(); $cur = array(); $prev = 0; foreach ($numbers as $number) { if ($number < $prev) { $groups[] = $cur; $cur = array(); } $cur[] = $number; $prev = $number; } if ($cur) $groups[] = $cur; 

Непроверенные. (Изменить: исправлены некоторые очевидные ошибки.)