Ik zou een array maken met alle waarden in het [min,max]-bereik en vervolgens een snijpunt maken met alle bestaande bereiken:
$new_range = range($min, $max);
foreach ($current_ranges as $range) {
if (count(array_intersect($new_range, range($range["min"], $range["max"])))) {
throw new RangeException();
}
}
Dit zorgt voor een uitzondering op het eerste reeds bestaande bereik dat samenvalt met het nieuwe.