【问题标题】:For loop not starting at 2, and consequently missing out the second fieldFor 循环不是从 2 开始,因此错过了第二个字段
【发布时间】:2016-05-20 00:25:40
【问题描述】:

我有一个很大的表单,当提交到数据库时,它需要分成奇数和偶数(根据它们的 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);
    }

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

如果我回显 odd for 循环,它会输出(所有输入值为 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”值。

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

【问题讨论】:

  • PHP 数组从0开始

标签: php laravel for-loop laravel-5 iteration


【解决方案1】:

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

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

【讨论】:

  • 同意,但循环应该从 0 开始。
【解决方案2】:

你不需要两个循环来完成这个,使用模数学函数来确定除以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);
 }

【讨论】:

  • 现在您正在测试奇数/偶数,您必须将 $i 增加一,而不是二 ($i++),并从零开始。
  • 这是否是更好的风格值得商榷。该解决方案的重要部分是从0 而不是2 开始。循环测试应该是&lt;120 而不是&lt;= 120
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 2013-08-04
  • 2015-11-28
  • 2021-12-11
相关资源
最近更新 更多