Php 第一个循环周期后的极限计数器值

Php 第一个循环周期后的极限计数器值,php,Php,我怎么能这样写呢?$counter值在第一次迭代时为1,在接下来的每个循环中为0 $counter =1; foreach($result): $number = $result['value'] + $counter; db->update($result['value'] => $number); $counter--; endforeach; 基本上,我的目标是在第一个循环中将$number设置为$number+1,然后在接下来的每个循环中将$number+0

我怎么能这样写呢?$counter值在第一次迭代时为1,在接下来的每个循环中为0

$counter =1;

foreach($result):

 $number = $result['value'] + $counter;

 db->update($result['value'] => $number);

 $counter--;

endforeach;
基本上,我的目标是在第一个循环中将$number设置为$number+1,然后在接下来的每个循环中将$number+0


$result['value']的值将在第一个循环后设置为$number+1,因此在下一个循环中,$result['value']将是所需的不变值。

为什么不使用类似的方法:

$counter = 1;
foreach($result):
    $number = $result['value'] + $counter;
    db->update($result['value'] => $number);
    if ($counter == 1) {
        $counter = 0;
    }
endforeach;
  • 测试
    $counter
    是否为
    1
  • 是,将其设置为
    0
  • 否则,什么也不做
这将为您提供如下代码:

$counter = 1;
foreach($result):
    $number = $result['value'] + $counter;
    db->update($result['value'] => $number);
    if ($counter == 1) {
        $counter = 0;
    }
endforeach;

或者,您也可以在循环结束时将
$counter
设置为
0
,而不测试任何内容:

$counter = 1;
foreach($result):
    $number = $result['value'] + $counter;
    db->update($result['value'] => $number);
    $counter = 0;
endforeach;
为此:

  • 第一次进入循环时,
    $counter
    将是
    1
    ,在循环之前初始化
  • 在第一次迭代结束时,它将被设置为
    0
  • 在每次迭代之后,它将被重新设置为
    0
    ——也就是说,它将保持在
    0

    • 为什么不使用这样的东西:

      $counter = 1;
      foreach($result):
          $number = $result['value'] + $counter;
          db->update($result['value'] => $number);
          if ($counter == 1) {
              $counter = 0;
          }
      endforeach;
      
      • 测试
        $counter
        是否为
        1
      • 是,将其设置为
        0
      • 否则,什么也不做
      这将为您提供如下代码:

      $counter = 1;
      foreach($result):
          $number = $result['value'] + $counter;
          db->update($result['value'] => $number);
          if ($counter == 1) {
              $counter = 0;
          }
      endforeach;
      

      或者,您也可以在循环结束时将
      $counter
      设置为
      0
      ,而不测试任何内容:

      $counter = 1;
      foreach($result):
          $number = $result['value'] + $counter;
          db->update($result['value'] => $number);
          $counter = 0;
      endforeach;
      
      为此:

      • 第一次进入循环时,
        $counter
        将是
        1
        ,在循环之前初始化
      • 在第一次迭代结束时,它将被设置为
        0
      • 在每次迭代之后,它将被重新设置为
        0
        ——也就是说,它将保持在
        0

        • 我看不出问题出在哪里

          $counter = 1;
          foreach($result):
            $number = $result['value'] + $counter;
            // Once you have used your variable, just set it to zero...
            $counter = 0;
            db->update($result['value'] => $number);
          endforeach;
          

          我看不出问题出在哪里

          $counter = 1;
          foreach($result):
            $number = $result['value'] + $counter;
            // Once you have used your variable, just set it to zero...
            $counter = 0;
            db->update($result['value'] => $number);
          endforeach;
          

          代码看起来像PHP,尽管它在语法上是无效的。我假设迭代变量(这里称为
          $results
          )的数字键从0开始:

          foreach($results as $counter => $result):
              $number = $result['value'] + !$counter;
          

          注意否定。

          代码看起来像PHP,尽管它在语法上无效。我假设迭代变量(这里称为
          $results
          )的数字键从0开始:

          foreach($results as $counter => $result):
              $number = $result['value'] + !$counter;
          

          注意否定。

          太棒了!问题显然是我自己,把最基本的想法复杂化了。非常感谢你给了我一个全新而明显的视角。太棒了!问题显然是我自己,把最基本的想法复杂化了。非常感谢你给了我一个全新而明显的视角。是的,你的第二个例子正是我想要实现的。这是一个连续工作几天而不休息的明显例子。谢谢你的帮助。是的,你的第二个例子正是我想要实现的。这是一个连续工作几天而不休息的明显例子。谢谢你的帮助。