Как увеличить количество итераций из цикла в php? - PullRequest
0 голосов
/ 20 июля 2010

Я работаю над пользовательской системой пагинации и столкнулся со следующей проблемой.Когда один из элементов отфильтровывается из набора, размер конечного массива меньше необходимого.Поэтому я ищу решение для увеличения количества итераций внутри цикла, чтобы всегда получать массив, состоящий из 50 элементов.

$limit = 50; //Number of elements I want to fetch

for($x=0; $x<$limit; $x++){

    if ($elementIsNotFiltered) {
        //add element to $someArray;
    }
    else {
        //increase the number of iterations, so even if some elements are filtered out,
        //the size of $someArray will always be 50 
    }

}

Спасибо за любую помощь.

Ответы [ 4 ]

7 голосов
/ 20 июля 2010

Вместо этого сделайте это в цикле while() и break, когда вы наконец нажмете $limit

2 голосов
/ 20 июля 2010

Используйте цикл while.

while(count($somearray) < 50 && /*elements remain*/) ...

2 голосов
/ 20 июля 2010
else {
    ++$limit;
}

Пробовал это?

Вы можете сделать то же самое и наоборот:

else {
    --$x;
}

Или быть более эффективным:

$x = 0;
while ($x != 50) {
    if ($notFiltered) {
        ++$x;
    }
}

Если вы также хотите сохранить переменную счетчика, вы можете использовать:

while (!isset($array[49])) {
}

!isset($array[49]) здесь является только синонимом count($array) < 50.

0 голосов
/ 20 июля 2010

Мне кажется, что вы ищете петлю while, а не петлю for:

while ($items < 50 && [more items to filter]) {
    if ([add to array]) {
       $items++;
    }
}

Если вы действительно хотите сделать это в цикле for, вы всегда можете изменить $x, но это делает ваш код нечитаемым и сложным в обслуживании - я бы рекомендовал не делать это ...

...