I am trying to solve the FizzBuzz question in PHP (in this case using 'ApaBole' instead).
Counting from 1 to 100, numbers divisible by 3 should output 'Apa', numbers divisible by 5 should output 'Bole', and numbers divisible by both should output 'ApaBole'. All other numbers should output themselves.
Desired Result
1, 2, Apa, 4, Bole, Apa, 7, 8, Apa, Bole, 11, Apa, 13, 14, ApaBole, 16, 17, Apa, 19, Bole, Apa, 22, 23, Apa, Bole, 26, Apa, 28, 29, ApaBole, 31, 32, Apa, 34, Bole, Apa, 37, 38, Apa, Bole, 41, Apa, 43, 44, ApaBole, 46, 47, Apa, 49, Bole, Apa, 52, 53, Apa, Bole, 56, Apa, 58, 59, ApaBole, 61, 62, Apa, 64, Bole, Apa, 67, 68, Apa, Bole, 71, Apa, 73, 74, ApaBole, 76, 77, Apa, 79, Bole, Apa, 82, 83, Apa, Bole, 86, Apa, 88, 89, ApaBole, 91, 92, Apa, 94, Bole, Apa, 97, 98, Apa, Bole
My Attempt
for ($i= 1; $i <= 100; $i++)
{
if($i % 15 == 0){
echo ", ApaBole";
} elseif($i % 3 == 0){
echo ", Apa";
} elseif($i % 5 == 0){
echo ", Bole";
} else{
// rtrim($i, ", ");
echo ', '.$i;
}
}
Output
, 1, 2, Apa, 4, Bole, Apa, 7, 8, Apa, Bole, 11, Apa, 13, 14, ApaBole, 16, 17, Apa, 19, Bole, Apa, 22, 23, Apa, Bole, 26, Apa, 28, 29, ApaBole, 31, 32, Apa, 34, Bole, Apa, 37, 38, Apa, Bole, 41, Apa, 43, 44, ApaBole, 46, 47, Apa, 49, Bole, Apa, 52, 53, Apa, Bole, 56, Apa, 58, 59, ApaBole, 61, 62, Apa, 64, Bole, Apa, 67, 68, Apa, Bole, 71, Apa, 73, 74, ApaBole, 76, 77, Apa, 79, Bole, Apa, 82, 83, Apa, Bole, 86, Apa, 88, 89, ApaBole, 91, 92, Apa, 94, Bole, Apa, 97, 98, Apa, Bole%
How do I remove the first ,
?
There's a few different ways you can achieve this. One being removing the first element in the string as suggested by @BadHorsie, but you can also use a check in the part that generates the first string, if you are at the first iteration or not.
<?php
for ($i= 1; $i <= 100; $i++) {
if ($i % 15 == 0) {
echo ", ApaBole";
} elseif ($i % 3 == 0) {
echo ", Apa";
} elseif ($i % 5 == 0) {
echo ", Bole";
} else {
echo ($i == 1 ? '' : ', ').$i;
}
}
Another way could be to store all the values in an array, and once you have all the values, implode()
it with your desired delimiter.
$values = [];
for ($i= 1; $i <= 100; $i++) {
if ($i % 15 == 0) {
$values[] = "ApaBole";
} elseif ($i % 3 == 0) {
$values[] = "Apa";
} elseif ($i % 5 == 0) {
$values[] = "Bole";
} else {
$values[] = $i;
}
}
echo implode(", ", $values);
Another could be to store all your values in a string-variable, then trim the first comma before you output it all.
$output = '';
for ($i= 1; $i <= 100; $i++) {
if ($i % 15 == 0) {
$output .= ", ApaBole";
} elseif ($i % 3 == 0) {
$output .= ", Apa";
} elseif ($i % 5 == 0) {
$output .= ", Bole";
} else {
$output .= ', '.$i;
}
}
echo ltrim($output, ', ');