0

以下代码将增加/减少 1 周:(是的,我的应用程序需要将值存储在$_SESSION.

if (isset($_POST['decrease'])) {
  $week_value = ($_SESSION['sess_week'] = $_SESSION['sess_week']-1);
}
else if (isset($_POST['increase'])) {
  $week_value = ($_SESSION['sess_week'] = $_SESSION['sess_week']+1);
}
else {
  $week_value = ($_SESSION['sess_week'] = date('W'));
}

echo $week_value;

但是我希望它在第 52 周(新年)重置。我怎样才能做到这一点?我是编程新手。

4

5 回答 5

1

您可以使用该date("W")函数获取当前时间的周数。如果是第 1 周,只需将其设置为 1(如果从那里开始,则设置为 0)。

您可以通过mktime()在 date 函数中使用 a 作为第二个参数来验证输出来进行测试和测试。

<?php

    if (date("W")==1)
    {
        $week_value =1;
    }
    else
    {
        if (isset($_POST['decrease'])) {
          $week_value = ($_SESSION['sess_week'] = $_SESSION['sess_week']-1);
        }
        else if (isset($_POST['increase'])) {
          $week_value = ($_SESSION['sess_week'] = $_SESSION['sess_week']+1);
        }
        else {
          $week_value = ($_SESSION['sess_week'] = date('W'));
        }
    }

?>
于 2012-08-02T08:25:08.587 回答
1
if (isset($_POST['decrease'])) {
  $week_value = $_SESSION['sess_week'] == 1 ? 52 : --$_SESSION['sess_week'];
}
else if (isset($_POST['increase'])) {
  $week_value = $_SESSION['sess_week'] == 52 ? 1 : ++$_SESSION['sess_week'];
}
else {
  $week_value = ($_SESSION['sess_week'] = date('W'));
}
于 2012-08-02T08:26:37.293 回答
1

这样做的一种可能性如下。(我认为您的意思是,如果一周超过 52,则应为 1。此外,我补充说,如果周降至 1 以下,则应再次为 52,因此是去年的最后一周)。

if (isset($_POST['decrease']))
{
     $week_value=$_SESSION['sess_week']-1;
}
else
{
     if (isset($_POST['increase']))
     {
          $week_value=$_SESSION['sess_week']+1;
     }
     else
     {
          $week_value=date('W');
     }
}

if ($week_value>52)
{
     $week_value=1;
}
else
{
     if ($week_value<1)
          $week_value=52;
}
$_SESSION['sess_week']=$week_value;
于 2012-08-02T08:29:33.290 回答
0

%用 52取模 ( )。

这样你就可以确保你的一周总是少于 52 周。

于 2012-08-02T08:31:39.243 回答
-1

试试这个:

if( $week_value == 52 )$week_value = 0;
于 2012-08-02T08:25:16.733 回答