在第一个循环周期后限制计数器值

时间:2010-03-06 20:42:50

标签: php

如何以这样的方式编写它:$计数器值在第一次迭代时为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']将是所需的未更改值。

3 个答案:

答案 0 :(得分:3)

我没有看到问题所在的位置。

$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;

答案 1 :(得分:2)

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

  • 测试$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

答案 2 :(得分:0)

代码看起来像PHP,虽然它在语法上不合法。我假设迭代变量(此处称为$results)具有从0开始的数字键:

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

注意到否定。