-3

私が理解していない機能は次のとおりです。

$year = date("Y");
$leapYear = false;
if((($year%4==0) && ($year%100==0)) || ($year%400==0))
    $leapYear = true;

(($year is divided by 4 but not divided by 100) or (the year is divided by 400))うるう年だったら、ということですか?

私はPHPが初めてです。ステートメントを理解するのを手伝ってください。

4

3 に答える 3

2

あなたが提供したコードはうるう年を見つけられないので、おそらく混乱していると思います。うるう年は 4 で割り切れますが、100 では割り切れません。ただし、400 で割り切れる場合を除きます。ロジックを逆にすると、見やすくなります。400で割り切れる場合は、何があっても閏年です。それ以外の場合、4 で割り切れるが 100 で割り切れない場合はうるう年です。

// pseudocode
if ( year % 400 == 0  || (year % 4 == 0 && year % 100 != 0))
    return true;
else
    return false;

あなたはそれをいじって、ただ言うことができます:

return year % 400 == 0  || (year % 4 == 0 && year % 100 != 0)

true&& は、 && が戻るために両側が必要であることを意味しますtrue

于 2013-07-16T03:06:36.710 に答える
0

これは基本的に疑似コードで言うことです

if(year is divisible by 4 or 100) {
  leapyear = true
} else if (year is divisible by 400) {
  //this will never be hit because it would meet the first case
  leapyear = true
}
于 2013-07-16T02:58:28.857 に答える
-1

コードに基づいて、2 番目の推測は正しいです。

if((($year % 4==0) && ($year % 100==0)) || ($year % 400==0))

うるう年であるためには、これらのいずれかが真でなければならないことを意味します。

  1. ($year%4==0) && ($year%100==0)
  2. $year%400==0

したがって、次の条件の下では、年はうるう年になります。

  • 年は 4 で割り切れ、100 で割り切れる

また

  • 年は400で割り切れる

ただし、投稿したコードは、うるう年を正しく定義していないという点で間違っています。

100 で割り切れ、400 で割り切れない場合を除き、4 で割り切れる年は閏年です。if($year % 100 == 0)($year % 100 != 0)

したがって、適切なロジックは次のようになります。

if ((($year % 4 == 0) && ($year % 100 != 0)) || ($year % 400 == 0))
    $leapYear = true;

について&&

&&は AND を意味し、式A && Bは true または false のいずれかです。

定義により、A && Bと の両方が true の場合にのみtrue にAなりBます。それらのいずれかが false の場合、それA && Bは false です。

于 2013-07-16T02:59:46.533 に答える