Как сделать интервал чисел?

Помогите с алгоритмом
есть массив
$arr = array(1, 2, 6.1, 6.2, 6.3, 6.4, 6.5)
нужно получить из него массив такого вида
$arr = array(1, 2, 6.1-6.5)

есть у кого какие идеи?
  • Вопрос задан
  • 263 просмотра
Решения вопроса 1
DevMan
@DevMan
$array  = [ 1, 2, 6.1, 6.2, 6.3, 6.4, 6.5, 7, 8 ];
$result = [ ];
for( $i = 0, $size = count( $array ); $i < $size; $i ++ ) {
    $start = $array[ $i ];
    $end   = $start;
    while( isset( $array[ $i + 1 ] ) && ! bccomp( $array[ $i + 1 ] - $array[ $i ], 0.1, 1 ) ) {
        $end = $array[ ++ $i ];
    }
    $result[] = $start == $end ? $start : $start . '-' . $end;
}
print_r( $result );
/*
Array
(
    [0] => 1
    [1] => 2
    [2] => 6.1-6.5
    [3] => 7
    [4] => 8
)
*/

ideone.com/fNVwXm
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@tplus
$a = array(1,2) + range(6.1, 6.5, 0.1);
>>
Array
(
    [0] => 1
    [1] => 2
    [2] => 6.3
    [3] => 6.4
    [4] => 6.5
)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы