<?php
$array = array(11,12,15,16,17,18,22,23,24);
//range finder
for ($i=0; $i<sizeof($array); $i++) { $current = $array[$i];
$previous = $array[$i-1];
if ($current==($previous+1)) {
//no break points are found
} else {
//return break points with keys intact
}
}
for ($i=0; $i<sizeof($break_start); $i++) { $key = $break_start[$i];
$next_key = $break_start[$i+1];
//if last iteration
if ($i==sizeof($break_start)-1) { echo "Range: ".$array[$key]." - ".$array[count($array)-1]." \n"; }
else {
echo "Range: ".$array[$key]." - ".$array[$next_key-1]." \n";
}
}
PD9waHAKCiRhcnJheSA9IGFycmF5KDExLDEyLDE1LDE2LDE3LDE4LDIyLDIzLDI0KTsKJGJyZWFrX3N0YXJ0ID0gYXJyYXkoKTsKCi8vcmFuZ2UgZmluZGVyCmZvciAoJGk9MDsgJGk8c2l6ZW9mKCRhcnJheSk7ICRpKyspIHsKCSRjdXJyZW50ID0gJGFycmF5WyRpXTsgCgkkcHJldmlvdXMgPSAkYXJyYXlbJGktMV07CglpZiAoJGN1cnJlbnQ9PSgkcHJldmlvdXMrMSkpIHsgCgkJLy9ubyBicmVhayBwb2ludHMgYXJlIGZvdW5kIAoJfSBlbHNlIHsgCgkJLy9yZXR1cm4gYnJlYWsgcG9pbnRzIHdpdGgga2V5cyBpbnRhY3QKCSAgICBhcnJheV9wdXNoKCRicmVha19zdGFydCwgJGkpOwoJfQoJCn0KCmZvciAoJGk9MDsgJGk8c2l6ZW9mKCRicmVha19zdGFydCk7ICRpKyspIHsKCSRrZXkgPSAkYnJlYWtfc3RhcnRbJGldOwoJJG5leHRfa2V5ID0gJGJyZWFrX3N0YXJ0WyRpKzFdOwoKCS8vaWYgbGFzdCBpdGVyYXRpb24KCWlmICgkaT09c2l6ZW9mKCRicmVha19zdGFydCktMSkgeyAKCQllY2hvICJSYW5nZTogIi4kYXJyYXlbJGtleV0uIiAtICIuJGFycmF5W2NvdW50KCRhcnJheSktMV0uIiBcbiI7IAoJCX0gCgllbHNlIHsgCgkJZWNobyAiUmFuZ2U6ICIuJGFycmF5WyRrZXldLiIgLSAiLiRhcnJheVskbmV4dF9rZXktMV0uIiBcbiI7CQoJCX0KfQ==