概要
PHP 学習メモ。条件分岐、ユーザー定義関数、ファイル読み込み。
内容
- はじめに
- 条件分岐
- ユーザー定義関数
- ファイル読み込み
1. はじめに
簡単な四則演算アプリで PHP の学習。
学習メモ 1 と 学習メモ 2 で学んだ知識で作ってみたけどうまくいかなかった。入力値 1 と 2 の他にラジオボタンで演算子を作った。それをどうやって POST で送ればいいかわからなかった。入力値 1 と 2 の入力フォーム form
の中にラジオボタンも入れることで解決した。POST
で送信するパラメータは単一の form
タグの中にすべて収める必要があるということらしい。コードはほぼ ChatGPT に教えてもらった。
<form method="POST"> <!-- 入力値 --> <table> <tr> <td>入力値 1</td> <td>入力値 2</td> </tr> <tr> <td> <input type="text" name="num1" /> </td> <td> <input type="text" name="num2" /> </td> </tr> </table> <!-- 演算子を選択 --> <table> <tr> <td> <input type="radio" name="operation" id="plus" value="plus" /> <label for="plus">plus</label> </td> <td> <input type="radio" name="operation" id="minus" value="minus"> <label for="minus">minus</label> </td> <td> <input type="radio" name="operation" id="times" value="times"> <label for="times">times</label> </td> <td> <input type="radio" name="operation" id="devided" value="devided"> <label for="devided">devided</label> </td> </tr> </table> <input type="submit" value="計算"/> </form>
上記のように書くと、入力値 1 と 2、演算子を $_POST
から受け取ることができる。何をどこに書けばいいか、ということを学ぶ必要がある。
3. ユーザー定義関数
計算処理を行う関数を定義した。次は ChatGPT から教えてもらったコード:
<?php function performCalculation($num1, $num2, $operation) { $result = 0; switch ($operation) { case 'plus': $result = $num1 + $num2; break; case 'minus': $result = $num1 - $num2; break; case 'times': $result = $num1 * $num2; break; case 'devided': if ($num2 != 0) { $result = $num1 / $num2; } else { return '0 で割ることはできません'; } break; default: return '演算子が選択されていません'; } return $result; } ?>
これを見ていたら $result
が不要だと思い、書き直した:
<?php function performCalculation($num1, $num2, $operation) { switch ($operation) { case 'plus': return $num1 + $num2; case 'minus': return $num1 - $num2; case 'times': return $num1 * $num2; case 'devided': if ($num2 != 0) { return $num1 / $num2; } else { return '0 で割ることはできません'; } default: return '演算子が選択されていません'; } } ?>
break
を書かなくていい分コードが少なくなるし、変数 $result
を新たに作らなくてよい。switch
文の結果をすぐ返すだけならこの方がいいと思った。
4. ファイル読み込み
ここは明日書こう。とりあえず今日は別ファイルの呼び出し方法を一つ知った。関数は呼び出し元ファイルを指定しなくてよいのか。だとすれば複数ファイルに同じ名前の関数をそれぞれ定義して呼び出すとどうなるのか。グローバルな呼び出しとか、ローカルな呼び出しとかあるのか。これも明日調べよう。
<?php // 計算処理関数を定義したファイルを読み込み require_once('calc.php'); $num1 = (float)$_POST['num1']; $num2 = (float)$_POST['num2']; $operation = $_POST['operation']; // 計算処理関数を呼び出し $result = performCalculation($num1, $num2, $operation); echo "計算結果:$result"; ?>