我现在的问题是:
    已知厂里的职工有5个班次分别为1班2班3班4班5班。按照5班三运转的方式上班,也就是说每天有三个班在上班。
    在2011年6月9日上班的班次是1班,2班,3班。2011年6月10日上班的班次是4班,5班,1班。2011年6月11日上班的班次是2班,3班,4班。以此类推。能帮我实现在数据库里列出出今后1年的每天是哪些班在上班。比如列出2011年1月1日到2011年12月31日的排班。直观点就是达到   1日   2日    3日   4日  以此类推出来的1年的结果。请高手指点。                123    451    234   512

解决方案 »

  1.   


    $arrange=array(
    0=>123,
    1=>451,
    2=>234,
    3=>512,
    4=>345
    );
    function arrangeDate($date,$arrange){
    $minus=(int)(strtotime($date)-strtotime('2011-6-9'))/(24*3600);
    $mod=$minus%5;
    if($mod<0)
    echo $arrange[$mod+5];
    else
    echo $arrange[$mod];
    return TRUE;
    }
    arrangeDate('2011-6-10',$arrange);
      

  2.   

    请加个注释谢谢,有些地方没看明白呢。我希望把日期对应着的班次送到sql server中去,该怎么做?让数据库存着的样式是。
      时间           班1    班2   班32011-6-10      4       5      1
      

  3.   


    $arrange=array(
    0=>'1,2,3',
    1=>'4,5,1',
    2=>'2,3,4',
    3=>'5,1,2',
    4=>'3,4,5'
    );//这是各个班次,按照1 2 3开始排列,往数据库插入时,写个split或explode就行
    function arrangeDate($date,$arrange){
    $minus=(int)(strtotime($date)-strtotime('2011-6-9'))/(24*3600);
    $mod=$minus%5;
    if($mod<0)//这是日期早于6月9号的,因为你给的数据是6月9号的班次是1 2 3,只能以此为基准
    echo $arrange[$mod+5];//你可以把echo改为数据库插入语句
    else//这是晚于6月9号的
    echo $arrange[$mod];
    return TRUE;
    }
    arrangeDate('2011-6-10',$arrange);//这里循环调用即可以实现循环往数据库里插入