こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在5社経験している、13年目エンジニアです。
この記事では、 PHPでarray_map関数を使ってFizzBuzz問題を
- FizzBuzz問題とは
- サンプルプログラム
- 実行結果
- プログラム解説
と、丁寧に解説していきます。
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows11 |
---|---|
PHPのバージョン | 8.2.4 |
XAMPPのバージョン | 8.2.4 |
PHPを動かすためにXAMPPを使っています。
XAMPPのインストールは、下の記事をご参考ください。
FizzBuzz問題とは
FizzBuzz問題とは、有名なプログラム問題の1つで
- 1から順々に数字を表示する
- 3の倍数の場合は「Fizz」と表示する
- 5の倍数の場合は「Buzz」と表示する
- 3の倍数、かつ、5の倍数の場合は「FizzBuzz」と表示する
というルールのもと考えるプログラム問題です。
この記事では、array_map関数を使って30までの範囲でFizzBuzz問題のサンプルプログラムを解説します。
array_map関数については、以下の記事をご参考ください。
phpプログラムは
C:\xampp\htdocs
配下に、【sample.php】というファイル名で格納しています。
FizzBuzz問題サンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php print('■array_map関数でFizzBuzz問題<br >'); array_map(function($number) { switch ($number) { case $number % 15 == 0 : echo 'FizzBuzz'; echo '<br>'; break; case $number % 3 == 0 : echo 'Fizz'; echo '<br>'; break; case $number % 5 == 0 : echo 'Buzz'; echo '<br>'; break; default : echo $number; echo '<br>'; break; } }, range(1, 30)); ?> |
実行結果
XAMPPを起動して、【http://localhost/sample.php】のURLにアクセスします。
XAMPPでPHPの動かし方については、こちらの記事をご参考ください。
FizzBuzz問題ができていることが確認できました。
プログラム解説
FizzBuzz問題の肝の条件判定をしている
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
switch ($number) { case $number % 15 == 0 : echo 'FizzBuzz'; echo '<br>'; break; case $number % 3 == 0 : echo 'Fizz'; echo '<br>'; break; case $number % 5 == 0 : echo 'Buzz'; echo '<br>'; break; default : echo $number; echo '<br>'; break; } |
を
- 条件判定の順番
- 倍数の判定の仕方
- switchについて
と解説します。
条件判定の順番
FizzBuzz問題のルールは
- 1から順々に数字を表示する
- 3の倍数の場合は「Fizz」と表示する
- 5の倍数の場合は「Buzz」と表示する
- 3の倍数、かつ、5の倍数の場合は「FizzBuzz」と表示する
です。
この中で最も優先すべきルールは
- 3の倍数、かつ、5の倍数の場合は「FizzBuzz」と表示する
です。
なぜなら3の倍数、かつ、5の倍数(たとえば15)は
- 3の倍数の場合は「Fizz」と表示する
- 5の倍数の場合は「Buzz」と表示する
どちらの条件も正となります。
なので1番最初に
- 3の倍数、かつ、5の倍数の場合は「FizzBuzz」と表示する
をif文に指定する必要があります。
倍数の判定の仕方
倍数の判定で使っている%算術演算子とは、演算子の左辺を右辺で割った余りを返す演算子です。
倍数はある数を整数倍した数のことです。
%算術演算子を使って割った余りを求めて0だと倍数だと判定できます。
たとえば
1 |
$number % 3 == 0 |
だと、numberを3で割った余りが0と一致すればiは3の倍数であると判定できます。
%算術演算子については、詳しくはこちらの記事をご参考ください。
switchについて
このサンプルプログラムでは条件判定でswitchを使ってますが、if文でも書くことができます。
if文で書くと、条件判定は以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
if ($number % 15 == 0) { echo 'FizzBuzz'; echo '<br>'; } elseif ($number % 3 == 0) { echo 'Fizz'; echo '<br>'; } elseif ($number % 5 == 0) { echo 'Buzz'; echo '<br>'; } else { echo $number; echo '<br>'; } |
まとめ:FizzBuzz問題をやってみよう!
以上がPHPでarray_map関数を使ったFizzBuzz問題サンプルプログラムでした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント