2010-03-06 33 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; 

通知否定。