- substr: documentation ( source)
- array_sum: documentation ( source)
- str_split: documentation ( source)
<?php
function couldBeDividedBy5($number)
{
$last_digit = substr($number, -1);
return ($last_digit == '5' || $last_digit == '0');
}
function couldBeDividedBy3($number)
{
if (strlen($number) > 1)
{
return couldBeDividedBy3(array_sum(str_split($number)));
}
else
{
return ($number == '3' || $number == '6' || $number == '9' || $number == '0');
}
}
function fizzbuzz($from, $to)
{
if ($from > $to)
{
return;
}
if (couldBeDividedBy5($from) || couldBeDividedBy3($from))
{
if (couldBeDividedBy3($from))
{
echo 'Fizz';
}
if (couldBeDividedBy5($from))
{
echo 'Buzz';
}
}
else
echo $from;
echo PHP_EOL;
return fizzbuzz($from + 1, $to);
}
fizzbuzz(0, 20);