
PHP 中使用字符串直接比较日期会导致逻辑错误,while ($t
php 中使用字符串直接比较日期会导致逻辑错误,`while ($t
在 PHP 中,切勿用字符串形式的日期直接进行大小比较(如 $t ——这种写法看似直观,实则严重错误。因为 PHP 将其视为普通字符串,执行的是字典序(lexicographic)比较,而非时间语义上的先后判断。例如 "1/10/2015" 在字典序中会小于 "1/2/2015"(因 '1' ✅ 正确做法:使用面向对象的 DateTime 类配合 DateInterval 进行健壮、可读、可维护的日期遍历: ⚠️ 关键注意事项:// 定义起止时间(支持多种格式,推荐 ISO 或明确格式)
$startDate = DateTime::createFromFormat('n/j/Y g:i:s A', '1/1/2015 10:00:00 AM');
$endDate = DateTime::createFromFormat('n/j/Y g:i:s A', '1/30/2015 5:00:00 PM');
// 创建 1 天间隔对象
$interval = new DateInterval('P1D');
// 初始化结果数组
$availableTimes = [];
// 循环:从起始日开始,逐日递增,直到严格小于结束时间
while ($startDate format('n/j/Y g:i:s A');
// 增加一天(注意:add() 修改原对象)
$startDate->add($interval);
}
// 输出结果(共 30 项,覆盖 1月1日 至 1月30日)
print_r($availableTimes);
,安全有效;而字符串比较完全不可靠;
$key = $startDate->format('n/j/Y') . ' 8:00:00 AM';
$value = $startDate->format('n/j/Y') . ' 5:00:00 PM';
$atArr[$key] = $value;
? 总结:日期逻辑必须交由专业的时间类处理。抛弃字符串拼接与 strtotime() 的脆弱链式调用,拥抱 DateTime + DateInterval 组合——它不仅是最佳实践,更是避免隐式 bug 的必要保障。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











