PHPize Online / SQLize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
Copy Clear
Copy Format Clear
<?php function cut($num, $remove_intervals) { // sort remove intervals by first value usort($remove_intervals, function($a, $b){return $a[0] <=> $b[0];}); // merge overlapped intervals $remove = array_reduce( $remove_intervals, function($res, $el) { $cnt = count($res)-1; if ($el[0] <= $res[$cnt][1]) { $res[$cnt][1] = max($el[1], $res[$cnt][1]); } else { $res[] = $el; } return $res; }, [$remove_intervals[0]] ); // build result array $result = array_reduce( $remove, function($res, $el) use ($num) { $cnt = count($res)-1; if ($el[0] < $res[$cnt][1]) { $res[$cnt][1] = $el[0]; if ($el[1] < $num) { $res[] = [$el[1], $num]; } } return $res; }, [[1, $num]] ); var_export($result); return $result; } print_r(cut(10000, [[30, 500], [700, 900], [800, 1000]])); print_r(cut(10000, [[30, 500], [1200, 3700], [50, 700], [1000, 3000], [6000, 20000]])); print_r(cut(1000, [[30, 500], [20, 7000], [10, 35]]));
Show:  
Copy Clear