概要
関数は 引数で値を受け取り、return で値を返す。echo は「画面にそのまま出す」のに対して、return は「呼び出し元に値を渡して、その後どう使うかは呼び出し側に任せる」という違いがある。return で値を返せるようになると、関数の結果を変数に代入したり、別の関数の引数に渡したり、計算式の中に埋め込んだりできるようになり、関数を 部品 として組み立てる発想が生まれる。
PHP の return は数値・文字列・真偽値・配列・オブジェクトなど何でも返せる。return が実行されるとそこで関数は終了し、それより後ろの行は実行されない。return を 1 度も書かない関数は暗黙的に null を返すので、「値を返したつもりが何も返っていない」状態にハマったら return の付け忘れをまず疑う。
このチャプターでつまずきやすいのは echo と return の混同。例えば function square($x) { echo $x * $x; } と書くと結果は画面に出るが、$y = square(3); としたとき $y は null のままになる。「画面に出すこと」と「値を返すこと」を別物として区別する感覚を、3 つのドリルで身に付ける。
学習目標
returnで関数から値を返せる- 戻り値を変数に代入したり、
echoで出力したりできる - 数値・文字列・真偽値を返せる
ドリル
| no | 内容 |
|---|---|
| 01 | square($x) で二乗を返す |
| 02 | full_name($a, $b) で氏名を連結して返す |
| 03 | is_even($n) で真偽を返す |
📝 演習: ドリル 01 — square($x) で二乗を返す
問題
引数 $x を受け取り、$x * $x を return で返す関数 square を定義してください。
定義した後、square(3)・square(4)・square(5) の戻り値を 1 行ずつ出力してください。
期待される出力:
9
16
25ヒント
function square($x) { return $x * $x; }- 下で
echo square(3) . "\n";を 3 回書く
📝 演習: ドリル 02 — full_name($first, $last) を連結して返す
問題
引数 $first・$last を受け取り、半角スペース 1 個でつないだ文字列を return で返す関数 full_name を定義してください。
定義した後、戻り値を変数で受け取り、echo で 2 件分出力してください。
太郎,山田花子,鈴木
期待される出力:
太郎 山田
花子 鈴木ヒント
function full_name($first, $last) { return $first . " " . $last; }$name1 = full_name("太郎", "山田");echo $name1 . "\n";を 2 件分
📝 演習: ドリル 03 — is_even($n) で真偽を返す
問題
引数 $n を受け取り、偶数なら true、奇数なら false を return で返す関数 is_even を定義してください。
定義した後、1〜5 の各数値について次の形式で 1 行ずつ出力してください。
<n>: true ← 偶数のとき
<n>: false ← 奇数のとき
期待される出力:
1: false
2: true
3: false
4: true
5: falseヒント
function is_even($n) { return $n % 2 === 0; }for ($i = 1; $i <= 5; $i++) { ... }でループis_even($i) ? "true" : "false"で文字に変換して出力