Как создать инкрементный диапазон чисел

#php

Вопрос:

Я хочу сгенерировать диапазон чисел на основе общего числа пользователей в моей базе данных

 <?php
//Let's assume the total number of users is 100

foreach( range(0, 100, 20) as $number){
   $ranges=$number.'-'.($number 20);
echo'<button>'.$ranges.'</button>';
}

//Result: 
0-20
20-40
40-60
60-80
80-100
100-120
?>
 

Что мне было нужно, так это 0-20, 21-40, 41-60, 61-80, 81-100.
Мне нужно остановиться на 100, то есть на общем количестве пользователей, а не на 100-120

или если у вас есть лучший подход

Комментарии:

1. Как насчет 100 - 1 того, чтобы сделать конец не включающим?

2. Есть ли причина, по которой это не должно быть 0-19, 20-39?..

3. @ggorlen Хорошая идея…но это означает, что мне нужно будет поместить его в массив, а затем изменить его на 1-100, я думаю

4. @Найджел Рен, Это может быть.

5. Таким образом, ваша первая группа (0-20) будет на единицу больше, чем каждая из следующих групп (21-40,…)?

Ответ №1:

Итак, два вопроса, с которыми нужно разобраться:

  • Остановитесь на 100. Затем вы просто немного уменьшаете значение остановки цикла (например, уменьшаете на 1, т. е. на 99).
  • Начните на единицу больше, чем конечное значение предыдущего диапазона, за исключением первого диапазона, который должен начинаться с 0. Вы можете добавить !!$number , чтобы достичь этого. Это логическое значение, которое истинно, когда $number не равно нулю, и приведет к 0 или 1, именно к тому, что необходимо.

Код:

 foreach(range(0, 100 - 1, 20) as $number) {
   $ranges = ($number   !!$number) . '-' . ($number   20); 
   echo '<button>' . $ranges . '</button>';
}
 

Комментарии:

1. Боже мой! Так идеально.