ダッシュで奪取

元SIerだけどWebエンジニアになりたい!

【PHP】Fizz Buzz書いた

ウォーミングアップとして、Fizz Buzz問題をPHPで書いてみました。

ルール

  • 1〜100までの数値を順番に表示する。
  • ただし、数値が3の倍数であれば、Fizz
  • 数値が5の倍数であれば、Buzz
  • 数値が3の倍数であり、5の倍数でもあれば、FizzBuzzと表示させる。
  • 詳しくは → Fizz Buzz - Wikipedia

サンプルページ

目次

  1. 数値を1つ表示させる
  2. 数値を1〜100まで表示させる
  3. 3の倍数でFizzを表示させる
  4. 5の倍数でBuzzを表示させる
  5. 3と5の倍数でFIzzBuzzを表示させる
  6. 関数化してみる

1.数値を1つ表示させる

<?php
  echo '1'.PHP_EOL;
?>

実行結果

1

2.数値を1〜100まで表示させる

<?php
    for ($count = 1; $count <= 100; $count++) {
      echo $count.PHP_EOL;
    }
?>

実行結果

1
2
3
4
5
6
... 以下略
99
100

3.3の倍数でFizzを表示させる

<?php
    for ($count = 1; $count <= 100; $count++) {
      $result = '';
      // countを3で割ったとき、余りが0ならFizz
      if ($count %3 == 0) {
        $result = 'Fizz';
      }
      // それ以外はcountの数値をそのまま
      else {
        $result = $count;
      }
    echo $result.PHP_EOL;
    }
?>

実行結果

1
2
Fizz
4
5
Fizz
... 以下略
Fizz
100

4. 5の倍数でBuzzを表示させる

<?php
    for ($count = 1; $count <= 100; $count++) {
      $result = '';
      if ($count %3 == 0) {
        $result = 'Fizz';
      }
      // countを5で割ったとき、余りが0ならBuzz
      elseif($count %5 == 0) {
        $result = 'Buzz';
      }
      else {
        $result = $count;
      }
      echo $result.PHP_EOL;
    }
?>

実行結果

1
2
Fizz
4
Buzz
Fizz
... 以下略
Fizz
Buzz

5. 3と5の倍数でFIzzBuzzを表示させる

<?php
    for ($count = 1; $count <= 100; $count++) {
      $result = '';

      // countを3で割ったとき、余りが0
      // かつ、countを5で割ったとき、余りが0ならFizzBuzzを表示
      if ($count %3 == 0 && $count %5 == 0) {
        $result = 'FizzBuzz';
      }
      elseif ($count %3 == 0) {
        $result = 'Fizz';
      }
      elseif($count %5 == 0) {
        $result = 'Buzz';
      }
      else {
        $result = $count;
      }
      echo $result.PHP_EOL;
    }
?>

3の倍数・5の倍数を判定する部分より前に入れないと、先に3(5)の倍数の分岐に入って 「Fizzのみ(Buzzのみ)」が表示されてしまうので、一番最初に記述。

実行結果
15の部分で、FizzBuzzが表示されているか確認!

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
... 以下略
Fizz
Buzz

6.関数化してみる

<?php
    // fizzbuzzの結果を返す関数
    function fizzbuzz($num) {
        if ($num %3 == 0 && $num %5 == 0) {
            $result = 'FizzBuzz';
        }
        elseif ($num %3 == 0) {
            $result = 'Fizz';
        }
        elseif($num %5 == 0) {
            $result = 'Buzz';
        }
        else {
            $result =  $num;
        }
        return $result.PHP_EOL;
    }

    // ループの中でfizzbuzz関数を実行
    for ($count = 1; $count <= 100; $count++) {
        $result = fizzbuzz($count);
        echo $result;
    }
?>

実行結果は、5と同じです。

ここまで書いておいてアレなのですが、if ($num %3 == 0 && $num %5 == 0) じゃなくて if ($num %15 == 0) の方がスマートだな…と思いました。