php 判断时间段是否重复
时间: 2023-07-26 16:21:43 浏览: 44
可以通过比较两个时间段的开始时间和结束时间来判断它们是否重叠。以下是一个示例代码:
```php
function isTimeOverlapping($start1, $end1, $start2, $end2) {
if ($start1 <= $end2 && $end1 >= $start2) {
return true;
}
return false;
}
// 例子:
$start1 = strtotime('2021-01-01 08:00:00');
$end1 = strtotime('2021-01-01 10:00:00');
$start2 = strtotime('2021-01-01 09:00:00');
$end2 = strtotime('2021-01-01 11:00:00');
if (isTimeOverlapping($start1, $end1, $start2, $end2)) {
echo '时间段重叠';
} else {
echo '时间段不重叠';
}
```
其中`$start1`和`$end1`表示第一个时间段的开始时间和结束时间,`$start2`和`$end2`表示第二个时间段的开始时间和结束时间。函数`isTimeOverlapping`返回一个布尔值,表示两个时间段是否重叠。
相关问题
PHP 怎么判断多个时间段是否重叠
判断多个时间段是否重叠,可以使用一个双重循环来遍历每个时间段,比较是否有重叠。以下是一个示例代码:
```php
function isTimeOverlapping($times) {
$count = count($times);
for ($i = 0; $i < $count - 1; $i++) {
for ($j = $i + 1; $j < $count; $j++) {
if ($times[$i]['start'] <= $times[$j]['end'] && $times[$i]['end'] >= $times[$j]['start']) {
return true;
}
}
}
return false;
}
// 例子:
$times = array(
array('start' => strtotime('2021-01-01 08:00:00'), 'end' => strtotime('2021-01-01 10:00:00')),
array('start' => strtotime('2021-01-01 09:00:00'), 'end' => strtotime('2021-01-01 11:00:00')),
array('start' => strtotime('2021-01-01 12:00:00'), 'end' => strtotime('2021-01-01 13:00:00'))
);
if (isTimeOverlapping($times)) {
echo '时间段重叠';
} else {
echo '时间段不重叠';
}
```
其中`$times`是一个包含多个时间段的数组,每个时间段包含`start`和`end`两个元素,分别表示时间段的开始时间和结束时间。函数`isTimeOverlapping`返回一个布尔值,表示多个时间段是否有重叠。
php 判断几个时间范围数组 是否存在重复交叉
假设你有一个时间范围数组 `$timeRanges`,每个时间范围都是一个关联数组,包含 `start_time` 和 `end_time` 两个键值对,表示时间范围的开始时间和结束时间。你可以使用双重循环来比较数组中的每个时间范围,判断它们是否存在交叉。
以下是一个 PHP 函数的示例代码,判断一个时间范围数组中是否存在交叉:
```php
function hasTimeRangeOverlap(array $timeRanges) : bool {
$count = count($timeRanges);
for ($i = 0; $i < $count - 1; $i++) {
for ($j = $i + 1; $j < $count; $j++) {
$range1 = $timeRanges[$i];
$range2 = $timeRanges[$j];
if (($range1['start_time'] <= $range2['end_time']) && ($range1['end_time'] >= $range2['start_time'])) {
return true;
}
}
}
return false;
}
```
该函数接受一个时间范围数组 `$timeRanges`,并返回一个布尔值,表示数组中是否存在交叉。函数中使用双重循环来比较数组中的每个时间范围,判断它们是否存在交叉。如果存在交叉,则函数返回 `true`,否则返回 `false`。