每两周轮换三个选项,在周五中午滚动



我需要根据当前周数轮换 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 周的时间进行额外调整,但必须有一个更明智的方法!

谢谢

你为什么不取一周数字的四舍五入的一半?然后,您只需要一个包含 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)];

这应该有效:

$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 来计算从第一个星期五中午开始的完整两周数。

最新更新