我正在研究自定义分页系统并遇到以下问题。当其中一个元素从集合中过滤掉时,最终数组的大小小于所需的大小。因此,我正在寻找一种解决方案,以增加循环内的迭代次数,始终获得由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
}
}
感谢您的帮助。
答案 0 :(得分:7)
在while()
循环中执行此操作,并在最终点击break
$limit
执行此操作
答案 1 :(得分:2)
else {
++$limit;
}
试过了吗?
你也可以反过来做同样的事情:
else {
--$x;
}
或者更有效:
$x = 0;
while ($x != 50) {
if ($notFiltered) {
++$x;
}
}
如果您想保存计数器变量,也可以使用:
while (!isset($array[49])) {
}
此处的!isset($array[49])
只是count($array) < 50
的同义词。
答案 2 :(得分:2)
使用while循环。
while(count($somearray) < 50 && /*elements remain*/) ...
答案 3 :(得分:0)
听起来我觉得你正在寻找一个while
循环 - 而不是for
循环:
while ($items < 50 && [more items to filter]) {
if ([add to array]) {
$items++;
}
}
如果您真的想在for
循环中执行此操作,则可以随时修改$x
,但这会使您的代码难以理解且难以维护 - 我建议不此...