对于不从 2 开始的循环,因此错过了第二个字段


For loop not starting at 2, and consequently missing out the second field

>我有一个大表单,当提交给数据库时,它需要拆分为奇数和偶数(基于它们的HTML名称),所以我可以对它们进行计算。

总共有 120 个HTML Input字段,因此 60 个奇数和 60 个偶数。

循环访问它们的for loops是:

  $h=0; $o=0;
    for($i=1; $i<=119; $i+=2)
    {
      $h = $h + Input::get($i);
    }
    for($i=2; $i<=120; $i+=2)
    {
      $o = $o + Input::get($i);
    }

我发现循环的奇数工作正常,但即使第二个循环从 2 开始,它也跳过添加该Input::get($i);并移动到第 4 个输入。

如果我回显 for 循环odd,它会输出(所有输入值均为 1):

for($i=2; $i<=120; $i+=2)
{
  echo $i;
  echo (",");
  $o = $o + Input::get($i);
  echo (Input::get($i));
}

2,14,16,18,110,112,114,116,118,

因此,如您所见,它不会从第二个输入字段中拾取"1"值。

任何关于为什么会这样的想法的帮助将不胜感激。

您不需要两个循环来完成此操作,使用模数学函数来确定除以 2(表示偶数)时是否有 0 的余数,请尝试一下:

 for($i=0; $i<=120; $i++)
 {
   if($i%2 == 0) //even
      $o = $o + Input::get($i);
   else //odd
      $h = $h + Input::get($i);
 }

你应该创建一个从 1 到 120 迭代的循环。 然后使用模运算符($a% $b)测试计数器是否为奇数/偶数。

即,如果 $a % 2 = 0,则该值为偶数,否则它是奇数。

相关文章: