闰年判断规则是:能被4整除但不能被100整除,或能被400整除的年份为闰年;PHP中可用布尔表达式($year % 4 === 0 && $year % 100 !== 0) || ($year % 400 === 0)实现,并建议封装为函数且使用严格比较。

判断一个年份是否为闰年,核心是依据公历闰年规则:能被4整除但不能被100整除,或者能被400整除的年份是闰年。
闰年判断的逻辑表达式
在PHP中,可直接用一行布尔表达式实现判断:
$isLeap = ($year % 4 == 0 && $year % 100 != 0) || ($year % 400 == 0);
这个表达式严格对应数学定义: - 第一部分($year % 4 == 0 && $year % 100 != 0):普通闰年(如2004、2020) - 第二部分($year % 400 == 0):世纪闰年(如1600、2000) - 注意运算符优先级,括号不可省略,否则逻辑会出错
封装成可复用的函数
把判断逻辑封装为函数,便于多次调用和维护:
function isLeapYear($year) {
return ($year % 4 === 0 && $year % 100 !== 0) || ($year % 400 === 0);
}
<p>// 使用示例
var_dump(isLeapYear(2000)); // true
var_dump(isLeapYear(1900)); // false
var_dump(isLeapYear(2024)); // true
var_dump(isLeapYear(2023)); // false建议使用严格比较(=== / !==),避免类型隐式转换带来的意外结果。
立即学习“PHP免费学习笔记(深入)”;
结合表单或输入做交互判断
若需用户输入年份并返回结果,可这样写:
<?php
$year = $_GET['year'] ?? null;
$result = null;
<p>if (is_numeric($year) && intval($year) > 0) {
$year = (int)$year;
$result = isLeapYear($year) ? "$year 是闰年" : "$year 是平年";
} else {
$result = "请输入有效的正整数年份";
}
?></p><p><form>
年份: <input type="number" name="year" value="<?= htmlspecialchars($year ?? '') ?>">
<button type="submit">判断</button>
</form></p><p><p><?= $result ?? '' ?></p>注意几点: - 检查输入是否为数字且为正整数,防止非法值 - 使用 (int) 强制转换确保参与运算的是整型 - 输出前用 htmlspecialchars() 防XSS
验证常见年份快速对照
调试或教学时,可用以下典型年份验证逻辑是否正确:
- 2000 → 闰年(能被400整除)
- 1900 → 平年(能被100整除但不能被400整除)
- 2024 → 闰年(能被4整除且不能被100整除)
- 2023 → 平年(不能被4整除)
不复杂但容易忽略。



















