【PHP】レッスン3-03:関数の戻り値を理解しよう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:関数の戻り値

この記事の練習問題を解くために必要な知識:
ビルトイン関数関数の定義と呼出し関数の戻り値デフォルト引数とキーワード引数関数の型付け無名関数とアロー関数スコープ

<<前のページ PHP記事一覧 次のページ>>

PHPの「関数の戻り値」とは

この章ではPHPにおける「関数の戻り値」の意味や使い方を学習します。用語の解説が不要な方はここをクリックして練習問題へ飛びましょう。




関数はプログラムの中で処理をまとめる便利な方法ですが、その処理結果を関数の外部に伝える仕組みが「戻り値」です。

戻り値は計算結果や処理の結果を他のコードで利用するために欠かせない重要な要素です。

関数の戻り値とは?

関数の戻り値とは関数の中で計算や処理を行った結果を呼び出し元に返す仕組みです。

戻り値を利用することで、関数が計算結果や状態を他のコードに渡し、その値を後続の処理に活用できます。

例えば数値の計算結果や文字列操作の結果を戻すことが一般的です。

PHPで戻り値を指定するには、return文を使用します。return文は関数の処理を終了し、その後に続くコードは実行されません。

以下が基本構文の例です。

<?php
function addNumbers($a, $b) { // 二つの仮引数を引き取るaddNumbers関数の定義
    return $a + $b;           // $a + $bnを戻り値として返す
}

$result = addNumbers(5, 3); // 関数を呼び出し、その戻り値を変数$resultに代入
echo $result; // 8 と出力
  • returnの後に値や変数を書くことで、その値を関数外に返します。
  • 関数内でreturnが実行されると、関数はその時点で終了します。

関数の戻り値の使用例

1. 数値を計算して返す関数

計算結果を戻り値として利用する例です。

<?php
function multiply($a, $b) {
    return $a * $b; // 掛け算の結果を返す
}

$result = multiply(4, 5);
echo "4 × 5 = " . $result . PHP_EOL; // 20 と出力

2. 条件に応じた結果を返す関数

条件分岐を利用して、異なる戻り値を返す例です。

<?php
function checkEvenOrOdd($number) {
    if ($number % 2 === 0) {
        return "偶数"; // 偶数の場合
    } else {
        return "奇数"; // 奇数の場合
    }
}

echo checkEvenOrOdd(7) . PHP_EOL; // 奇数 と出力

3. 文字列を操作して返す関数

文字列を加工して返す例です。

<?php
function greet($name) {
    return "こんにちは、" . $name . "さん!"; // メッセージを返す
}

echo greet("太郎") . PHP_EOL; // こんにちは、太郎さん! と出力

まとめ

関数の戻り値は、処理結果を他のコードで再利用するために不可欠な機能です。

PHPではreturn文を使うことで簡単に戻り値を指定できます。

戻り値を活用することでコードの再利用性を高め、効率的なプログラムを書くことができます。

関数の戻り値の練習問題:数字の合計を計算し偶数・奇数を判定しよう

ユーザーから2つの整数を入力し、その合計を計算するプログラムを作成しましょう。

さらに計算結果が偶数か奇数かを判定して結果を表示します。

関数を使って処理を分け、戻り値を活用して結果を取得する方法を学びます。

この問題の要件

以下の要件に従ってコードを完成させてください。

  1. 以下の2つの関数を作成すること。
    • calculateSum($a, $b):2つの引数を受け取り、その合計を戻り値として返す関数。
    • checkEvenOrOdd($number):1つの引数を受け取り、その値が偶数か奇数かを判定して結果を文字列として返す関数。
  2. ユーザーから2つの整数を標準入力で受け取ること。
  3. 入力された整数の合計を計算し、その結果を画面に表示すること。
  4. 合計値が偶数か奇数かを判定し、その結果を画面に表示すること。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

1つ目の数字を入力してください。
8
2つ目の数字を入力してください。
3
入力された2つの数字の合計は: 11 です。
合計値は 奇数 です。

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:数値の合計を計算する関数calculateSumを定義
  □ 引数$aと$bを受け取り、合計値を計算して返す
2:偶数か奇数かを判定する関数checkEvenOrOddを定義
  □ 引数$numberを受け取り、偶数なら”偶数”、奇数なら”奇数”の文字列を返す
3:「1つ目の数字を入力してください。」と出力
4:標準入力から値を取得し、整数型に変換して変数$firstNumberに代入
5:「2つ目の数字を入力してください。」と出力
6:標準入力から値を取得し、整数型に変換して変数$secondNumberに代入
7:関数calculateSumを呼び出し、$firstNumber$secondNumberの合計を計算し、変数$sumに代入
8:「入力された2つの数字の合計は: 」と$sumの値を出力
9:関数checkEvenOrOddを呼び出し、合計値$sumが偶数か奇数かを判定し、結果を変数$resultに代入
10:「合計値は 」と$resultの値を出力

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

<?php

// 数値の合計を計算する関数
function calculateSum($a, $b) {
    /* 【穴埋め問題1】
    ここに、$aと$bの合計を計算し、その結果を戻り値として返すコードを書いてください。
    */
}

// 偶数か奇数かを判定する関数
function checkEvenOrOdd($number) {
    /* 【穴埋め問題2】
    ここに、$numberが偶数の場合は"偶数"、奇数の場合は"奇数"と返すコードを書いてください。
    */
}

// メイン処理
echo "1つ目の数字を入力してください。" . PHP_EOL;
// 標準入力でユーザーから1つ目の数字を取得する
$firstNumber = (int)fgets(STDIN);

echo "2つ目の数字を入力してください。" . PHP_EOL;
// 標準入力でユーザーから2つ目の数字を取得する
$secondNumber = (int)fgets(STDIN);

// 合計を計算する関数を呼び出し、その結果を取得
/* 【穴埋め問題3】
ここにcalculateSum関数を呼び出して合計を計算し、その結果を$sumに代入するコードを書いてください。
*/
echo "入力された2つの数字の合計は: " . $sum . " です。" . PHP_EOL;

// 偶数・奇数判定の関数を呼び出し、その結果を取得
/* 【穴埋め問題4】
ここにcheckEvenOrOdd関数を呼び出して合計値の偶数・奇数を判定し、その結果を$resultに代入するコードを書いてください。
*/
echo "合計値は " . $result . " です。" . PHP_EOL;

以上がこの問題の穴埋めコードです。

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。



練習問題の解答と解説

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

<?php

// 数値の合計を計算する関数
function calculateSum($a, $b) {
    // $a と $b の合計を計算し、その結果を戻り値として返す
    return $a + $b;
}

// 偶数か奇数かを判定する関数
function checkEvenOrOdd($number) {
    // 数字が偶数か奇数かを判定し、結果を文字列として返す
    if ($number % 2 === 0) {
        return "偶数";
    } else {
        return "奇数";
    }
}

// メイン処理
echo "1つ目の数字を入力してください。" . PHP_EOL;
// 標準入力でユーザーから1つ目の数字を取得する
$firstNumber = (int)fgets(STDIN);

echo "2つ目の数字を入力してください。" . PHP_EOL;
// 標準入力でユーザーから2つ目の数字を取得する
$secondNumber = (int)fgets(STDIN);

// 合計を計算する関数を呼び出し、その結果を取得
$sum = calculateSum($firstNumber, $secondNumber);
echo "入力された2つの数字の合計は: " . $sum . " です。" . PHP_EOL;

// 偶数・奇数判定の関数を呼び出し、その結果を取得
$result = checkEvenOrOdd($sum);
echo "合計値は " . $result . " です。" . PHP_EOL;

正解コードの解説

今回のコードではPHPで「関数の戻り値」を活用して計算結果を利用する方法を学びます。

コードをブロックごとに分解し、それぞれの動作や文法について解説していきます。

合計を計算する関数

function calculateSum($a, $b) {
    return $a + $b;
}
  • function: 新しい関数を定義するキーワードです。calculateSumは関数の名前です。
  • 引数 $a, $b: 関数に渡される値です。この関数では2つの引数(整数)を受け取り、その合計を計算します。
  • return: このキーワードは関数の結果を呼び出し元に返します。ここでは$a + $bの計算結果を返しています。

偶数か奇数かを判定する関数

function checkEvenOrOdd($number) {
    if ($number % 2 === 0) {
        return "偶数";
    } else {
        return "奇数";
    }
}
  • if: 条件を満たす場合に特定の処理を実行する構文です。
  • %演算子: 剰余(余り)を計算します。$number % 2が0であれば偶数、そうでなければ奇数です。
  • 文字列を返す戻り値: この関数では「偶数」または「奇数」という文字列を戻り値として返しています。

標準入力でユーザーからデータを受け取る

$firstNumber = (int)fgets(STDIN);
  • fgets(STDIN): ユーザーから入力を受け取るための関数です。
  • 型キャスト (int): 入力は文字列として扱われるため、整数型に変換しています。

合計を計算する

$sum = calculateSum($firstNumber, $secondNumber);
echo "入力された2つの数字の合計は: " . $sum . " です。" . PHP_EOL;
  • 関数の呼び出し: calculateSumを呼び出し、戻り値(合計値)を$sumに代入しています。
  • echo: 計算結果を画面に表示します。
  • 文字列の連結: ドット演算子(.)を使って、文字列と変数を結合しています。

偶数・奇数を判定する

$result = checkEvenOrOdd($sum);
echo "合計値は " . $result . " です。" . PHP_EOL;
  • 関数の呼び出し: checkEvenOrOddを呼び出し、戻り値(偶数または奇数)を$resultに代入しています。
  • 表示: 判定結果を画面に表示します。

まとめ

このコードでは以下を学びました:

  1. 関数の戻り値の使い方: 戻り値を利用することで計算結果や処理結果を簡単に他の処理で再利用できます。
  2. 関数の定義と呼び出し: 処理を関数としてまとめることでコードが読みやすく再利用しやすくなります。
  3. 条件分岐と入力の活用: ユーザーからの入力を利用し、動的な処理を行う方法を学びました。

PHPの関数はコードを効率的に書くための強力なツールです。

戻り値を活用することで、処理を他の部分と連携させる力を身につけましょう!

<<前のページ PHP記事一覧 次のページ>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    PHPのテキスト&問題集トップへ戻る
    トップページへ戻る