2010-03-06 69 views
0

如何以$计数器值在其第一次迭代中为1,在每个后续周期中为0来编写此值?在第一个循环后限制计数器值

$counter =1; 

foreach($result): 

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

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

$counter--; 

endforeach; 

本质上我的目标是获得$号是在第一循环$号+ 1,然后对每个以下循环$号+ 0。

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

回答

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; 
+0

辉煌!问题显然是我自己,使最基本的想法复杂化了。非常感谢你给我一个清晰明了的视角。 – sterling 2010-03-06 20:53:46

2

为什么不使用这样的事情:

  • 测试,如果$counter1
  • 是肯定的,将其设置为0
  • 否则,什么都不做

这将使你一些看起来像这样的代码:

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


或者,你也可以只设置$counter0在循环的结束,不是测试什么:

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

有了这个:

  • 第一次是在循环,$counter将为1,如循环前初始化
  • 在第一次迭代结束时,它将被设置为0
  • 然后它将在每次迭代之后重新设置为0 - 即它将保持在0
+0

是的,你的第二个例子正是我试图完成的。这是一个明确的案例,日复一日地工作,而不是休息。谢谢您的帮助。 – sterling 2010-03-06 20:55:08

+0

不客气:-)玩得开心! – 2010-03-06 20:57:05

0

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

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

通知否定。