【问题标题】:How to increase number of iterations from within the loop in php?如何在 php 中增加循环内的迭代次数?
【发布时间】:2011-03-18 03:00:24
【问题描述】:

我正在开发自定义分页系统并遇到以下问题。当其中一个元素从集合中过滤出来时,最终数组的大小小于所需的大小。因此,我正在寻找一种解决方案来增加循环内的迭代次数,以始终获得由 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 
    }

}

感谢您的帮助。

【问题讨论】:

    标签: php loops iteration


    【解决方案1】:
    else {
        ++$limit;
    }
    

    试过了吗?

    你也可以反过来做同样的事情:

    else {
        --$x;
    }
    

    或者更有效一点:

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

    如果你也想保存计数器变量,你可以使用:

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

    这里的!isset($array[49])只是count($array) &lt; 50的同义词。

    【讨论】:

    • @ecu - $x-- 怎么样?
    • @nikic,不起作用的原因是 else 子句将在循环完成后触发——此时更改 $limit 为时已晚。
    • 你能详细说明为什么会这样吗,克雷格?至少我不明白为什么不应该执行它:(
    【解决方案2】:

    改为在while() 循环中执行,当您最终点击$limitbreak

    【讨论】:

    • 是的;这。 for 循环适用于您知道数字的情况,while 循环适用于您不知道数字但您知道何时到达那里的情况。
    • 但是为什么你一个无限的while循环然后中断而不是使用while指定条件?
    • 您可以轻松地在循环中设置条件,而不是使用 break $x = true; while ($x) { if () { $x=false; } }
    【解决方案3】:

    使用 while 循环。

    while(count($somearray) &lt; 50 &amp;&amp; /*elements remain*/) ...

    【讨论】:

      【解决方案4】:

      在我看来,您正在寻找 while 循环 - 而不是 for 循环:

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

      如果您真的想在 for 循环中执行此操作,您可以随时修改 $x 但这会使您的代码不可读且难以维护 - 我建议不要这样做...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-27
        • 1970-01-01
        • 2017-02-09
        • 1970-01-01
        • 2015-11-23
        • 1970-01-01
        相关资源
        最近更新 更多