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
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

この関数を使用してdate("W")、現在の時刻の週番号を取得できます。1週目である場合は、1に設定します(開始する場合は0に設定します)。

mktime()日付関数の2番目のパラメーターとしてを使用して出力を検証することにより、遊んでテストすることができます。

<?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

これを行う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 に答える