Je créerais un tableau avec toutes les valeurs dans la plage [min,max], puis je ferais une intersection avec toutes les plages existantes :
$new_range = range($min, $max);
foreach ($current_ranges as $range) {
if (count(array_intersect($new_range, range($range["min"], $range["max"])))) {
throw new RangeException();
}
}
Cela lèvera une exception sur la première plage déjà existante coïncidant avec la nouvelle.