【问题标题】:PHP date() increase/decrease week store in $_SESSIONPHP date() 在 $_SESSION 中增加/减少周存储
【发布时间】:2012-08-02 08:20:36
【问题描述】:

以下代码将星期增加/减少 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 周(新年)重置。我怎样才能做到这一点?我是编程新手。

【问题讨论】:

    标签: php session date increment descendant


    【解决方案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'));
    }
    

    【讨论】:

    • 感谢大家的快速回复。我使用了@xdazz 代码。它就像一个魅力!
    【解决方案2】:

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

    您可以在日期函数中使用mktime() 作为第二个参数来验证输出,并对其进行测试。

    <?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'));
            }
        }
    
    ?>
    

    【讨论】:

      【解决方案3】:

      执行此操作的一种可能性如下。 (我认为您的意思是,如果一周超过 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;
      

      【讨论】:

        【解决方案4】:

        用 52 取模 (%)。

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

        【讨论】:

          【解决方案5】:

          试试这个:

          if( $week_value == 52 )$week_value = 0;
          

          【讨论】:

          • 如果此人有一段时间没有登录,这可能不起作用。
          猜你喜欢
          • 1970-01-01
          • 2010-09-13
          • 1970-01-01
          • 2012-03-25
          • 2019-02-13
          • 2014-04-04
          • 2012-05-30
          • 1970-01-01
          • 2011-11-27
          相关资源
          最近更新 更多