2013-12-18 60 views
0

我需要根據當前週數輪換3個選項;即:三個選項每週輪換一次,星期五在午間滾動

if($weekNumber == 42 || $weekNumber == 43){ 
$thisID = 1;  
}    
else if($weekNumber == 44 || $weekNumber == 45){ 
$thisID = 3;  
} 
else if($weekNumber == 46 || $weekNumber == 47){ 
$thisID = 2;  
}  
else if($weekNumber == 48 || $weekNumber == 49){ 
$thisID = 1;  
} 

我明顯更喜歡這是少手動!我已經考慮將3個ID放在一個數組中,並根據從X日起已經過去的星期數來選擇,但我不確定如何實現它。

另外......翻轉需要在週五的中午。我考慮簡單地增加上述計劃中的星期編號,對於從第52周到第1周的時間進行額外調整,但必須採取更明智的做法!

謝謝

回答

1

爲什麼不採取週數的四捨五入?然後,你只需要一個目錄控股26點的ID,你可以實現直接查找:

$catalog=[1,2,3,4,5,6,3,4,2,5,6,7,4,4,7,9,5,8,8,9,2,4,5,7,6,8,9]; 
$thisID = $catalog[floor($weekNumber/2)]; 
1

這應該工作:

$options = array(1,2,3); 
$offset = 129600; 
$twoWeeks = 1209600; 
$idx = floor((time()-$offset)/$twoWeeks) % count($options); 

$chosenOption = $options[$idx]; 

一些解釋:

  • 0 Unix時間是週四在午夜,所以第一個星期五中午129600秒。
  • 使用time()-$offset我們將時間設置爲星期五中午作爲我們時間計算的零點。
  • 現在,截至週五中午是零點,我們可以在中午通過簡單地將傳遞秒1209600.
+0

我真的很喜歡這個「非維護計數從第一個星期五整整兩個星期的數'的方法,謝謝,但到目前爲止,我無法得到它的工作,我不知道我錯過了什麼: – cog1

+0

在我的翻轉計劃,我目前在第6周和ID 1.週五在中午,現在是時候滾動到下一個ID 2,並保持第7周和幾乎所有的第8周 - 在第8周12:00:01它應該滾動到ID 3 - 然後再次相同,除了在周10它應該再次滾動到ID 1。 我確實創建了一個PHP小提琴,但是當我輸入我意識到的評論時 - 代碼「無法知道」起始點在哪裏。我碰巧在第6周滾動,但它可能是7. – cog1

+0

@ cog1你只是一個星期了;嘗試'$偏移= 36 * 60 * 60 + 7 * 24 * 60 * 60;'(一天半加一週)。 – Gumbo

相關問題