Skip to content

Instantly share code, notes, and snippets.

/ArrayDemo.php Secret

Created February 7, 2011 20:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/02cb126265597135c8ac to your computer and use it in GitHub Desktop.
Save anonymous/02cb126265597135c8ac to your computer and use it in GitHub Desktop.
function mergeNumbers($numbers) {
$newNumbers = array();
reset($numbers);
while(($currentNumber = current($numbers)) !== false) {
$tmpCurrent = $currentNumber;
while (($nextNumber = next($numbers)) !== false && abs($nextNumber-$tmpCurrent)==1) {
$tmpCurrent = $nextNumber;
}
if ($tmpCurrent == $currentNumber) {
$newNumbers[] = $currentNumber;
}
else {
$newNumbers[] = $currentNumber . '-' . $tmpCurrent;
}
}
return $newNumbers;
}
function splitNumbers($numbers) {
$newNumbers = array();
foreach($numbers as $number) {
if (strpos($number, '-')) {
$range = explode('-', $number, 2);
array_splice($newNumbers, count($newNumbers), 0, range($range[0], $range[1]));
}
else {
$newNumbers[] = $number;
}
}
return $newNumbers;
}
$numbers = array(13,81,80,79,78,77,76,19,40,41,42,43,44,45,48);
$numbers = mergeNumbers($numbers);
var_dump($numbers);
$numbers = splitNumbers($numbers);
var_dump($numbers);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment