Это простой фрагмент кода, что способ ее проверки основан на сравнении высокий конец первого диапазона до самого низкого конца второго диапазона (если мы будем рассматривать только эти диапазоны действительны). И в первую очередь, сортировочные диапазоны играет важную роль:
$ranges = ["1-9","11-15","14-20","8-11"];
$results = [];
sort($ranges, SORT_NUMERIC);
foreach ($ranges as $first) {
$firstNums = explode("-", $first);
foreach ($ranges as $second) {
if ($first == $second) continue;
$secondNums = explode("-", $second);
if ($firstNums[1] >= $secondNums[0] && $first != end($ranges)) {
$results[$first] = $second;
}
}
}
print_r($results);
результаты (которые содержат обе даты, которые перекрываются):
Array
(
[1-9] => 8-11
[8-11] => 11-15
[11-15] => 14-20
)
https://stackoverflow.com/questions/325933/determine -whether-two-date-range-overlap – techouse
- это ваш вопрос, как понять, что элемент перекрывается? – splash58
@ Vladislav Вы хотите проверить, что перекрытие есть, или найти совпадающие элементы? – splash58