这是我不理解的功能:
$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的新手,请任何人帮助我理解这些陈述。
答案 0 :(得分: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
。
答案 1 :(得分: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
}
答案 2 :(得分:-1)
根据您的代码,您的第二个猜测是正确的。
if((($year % 4==0) && ($year % 100==0)) || ($year % 400==0))
意味着这些必须属于闰年:
($year%4==0) && ($year%100==0)
$year%400==0
在这种情况下,一年是闰年:
OR
但是,您发布的代码错误,因为它没有正确定义闰年。
一年是leap year,如果它可被4整除,除非它可被100整除且不能被400整除。所以在if
语句中($year % 100 == 0)
应为{ {1}}
所以正确的逻辑就是这样:
($year % 100 != 0)
if ((($year % 4 == 0) && ($year % 100 != 0)) || ($year % 400 == 0))
$leapYear = true;
: &&
表示AND,表达式&&
为true或false。
根据定义,A && B
仅在A && B
和A
都为真时才为真。如果其中任何一个为假,则B
为假。