php之 校验多个时间段是否重复
要检查多个时间段是否重复,可以通过将所有时间段的开始时间和结束时间组合成一个数组,然后按开始时间和结束时间排序,比较相邻时间段来实现。
以下是一个PHP函数示例,用于检查时间段是否重复:
function areTimePeriodsOverlapping($periods) {
// 按开始时间排序
usort($periods, function($a, $b) {
return $a['start'] - $b['start'];
});
// 检查重叠
for ($i = 1; $i < count($periods); $i++) {
if ($periods[$i - 1]['end'] > $periods[$i]['start']) {
return true; // 发现重叠
}
}
return false; // 没有发现重叠
}
// 示例使用
$timePeriods = [
['start' => 1, 'end' => 5],
['start' => 10, 'end' => 15],
['start' => 7, 'end' => 8], // 这个时间段与第一个或第二个重叠
];
$overlapping = areTimePeriodsOverlapping($timePeriods);
echo $overlapping ? '有重叠' : '无重叠';
在这个例子中,areTimePeriodsOverlapping
函数接收一个数组 $periods
,其中每个时间段是一个包含 start
和 end
键的关联数组。函数将这些时间段按开始时间排序,然后检查是否有时间段重叠。如果发现重叠,函数返回 true
,否则返回 false
。
评论已关闭