UZEIR
@UZEIR
Учусь. Пытаюсь развиваться.

Не могу в цикле выводить элементы массива в промежутках, как правильно построить цикл?

У меня выводится сначала от 0 до 5 элементов
Потом должно по идеи от 5 до 10 элементов выводится, но выводится от 0 до 10 в чем ошибка?

for ($x=0, $i=0, $d=5; $i <= $_REQUEST['count']; $i++, $x+=5, $d+=5) {
  if($_GET['page']==$i) {
    $rea = array_slice($new_arr, $x, $d);
  }
}
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
elevenelven
@elevenelven
Php Dev @ Amadeus
Конкретно в вашем коде ошибка, это третий аргумент функции array_slice(). Третий аргумент, это не конечный оффсет, а количество элементов считая от значения второго аргумента.

То есть, поменяйте на что-то такое:
$rea = array_slice($new_arr, $x, $_REQUEST['count']);


Но я бы предпочел не гонять впустую for. Добавить фильтрацию и санитацию входных параметров.
$new_arr = range(1, 200);

$page              = (int)$_GET['page'] - 1;//logically we have page 0, but UI will show page 1
$count             = (int)$_GET['count'];
$count             = ($count > 0 && $count<=50)$count?50;
$startElementIndex = $page * $count;

$rea = array_slice($new_arr, $startElementIndex, $count);

var_dump($rea);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы