Skip to content

Instantly share code, notes, and snippets.

@marinsagovac
Created December 15, 2017 09:54
Show Gist options
  • Save marinsagovac/8d4749a7fb60857fe28033809afd7306 to your computer and use it in GitHub Desktop.
Save marinsagovac/8d4749a7fb60857fe28033809afd7306 to your computer and use it in GitHub Desktop.
PHP Xrange
<?php
function xrange($start, $limit, $step = 1) {
if ($start < $limit) {
if ($step <= 0) {
throw new LogicException('Step must be +ve');
}
for ($i = $start; $i <= $limit; $i += $step) {
yield $i;
}
} else {
if ($step >= 0) {
throw new LogicException('Step must be -ve');
}
for ($i = $start; $i >= $limit; $i += $step) {
while (1) {}
yield $i;
}
}
}
/*
* Note that both range() and xrange() result in the same
* output below.
*/
echo 'Single digit odd numbers from range(): ';
foreach (range(1, 9, 2) as $number) {
echo "$number ";
}
echo "\n";
echo 'Single digit odd numbers from xrange(): ';
foreach (xrange(1, 9, 2) as $number) {
echo "$number ";
}
@Sophist-UK
Copy link

Line 18 should be removed. while (1) {}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment