PHP 学習メモ 3

概要

 PHP 学習メモ。条件分岐、ユーザー定義関数、ファイル読み込み。

内容

  1. はじめに
  2. 条件分岐
  3. ユーザー定義関数
  4. ファイル読み込み

1. はじめに

 簡単な四則演算アプリで PHP の学習。

図 1

 学習メモ 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 から受け取ることができる。何をどこに書けばいいか、ということを学ぶ必要がある。

2. 条件分岐

 条件分岐は特に問題なさそう。

www.php.net

www.php.net

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 文の結果をすぐ返すだけならこの方がいいと思った。

www.php.net

4. ファイル読み込み

 ここは明日書こう。とりあえず今日は別ファイルの呼び出し方法を一つ知った。関数は呼び出し元ファイルを指定しなくてよいのか。だとすれば複数ファイルに同じ名前の関数をそれぞれ定義して呼び出すとどうなるのか。グローバルな呼び出しとか、ローカルな呼び出しとかあるのか。これも明日調べよう。

<?php
  // 計算処理関数を定義したファイルを読み込み
  require_once('calc.php');

  $num1 = (float)$_POST['num1'];
  $num2 = (float)$_POST['num2'];
  $operation = $_POST['operation'];

  // 計算処理関数を呼び出し
  $result = performCalculation($num1, $num2, $operation);

  echo "計算結果:$result";
?>