return で戻り値を返す
テクノロジ系 / function (関数定義・引数・return・型宣言)
return で戻り値を返す
Lesson 7 / Chapter 3
echo するだけの関数は使い回しにくい
<?php
function square($x) {
echo $x * $x . "\n";
}
square(3); // 9- 中で
echoしてしまうと「画面に出す」だけで終わる - 計算結果を他で 再利用 したいときに困る
- 戻り値 にすれば、呼び出し側で自由に扱える
return で値を返す
<?php
function square($x) {
return $x * $x;
}
$result = square(3);
echo $result . "\n"; // 9return 値;で関数から値を返す- 呼び出し側で
$result = square(3);のように受け取る returnを実行すると関数はそこで 終わる
戻り値はそのまま echo にも渡せる
<?php
function square($x) {
return $x * $x;
}
echo square(4) . "\n"; // 16
echo square(5) . "\n"; // 25- 変数に代入せずに
echoの中に直接書ける - 戻り値を別の関数の引数に渡すこともできる
戻り値の型は何でもよい
<?php
function full_name($first, $last) {
return $first . " " . $last; // 文字列を返す
}
function is_big($n) {
return $n >= 100; // 真偽値を返す
}
echo full_name("太郎", "山田") . "\n"; // 太郎 山田
var_dump(is_big(50)); // bool(false)- 数値・文字列・真偽値・配列など、何でも返せる
returnを書かない関数の戻り値はnull
このチャプターでできるようになること
✅ return 値; で関数から値を返せる
✅ 戻り値を変数で受け取れる
✅ 戻り値を echo に直接渡せる
✅ 数値・文字列・真偽値を返せる
→ ドリルへ
考えてみよう
既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。
ドリル 01 — square($x) で二乗を返す
問題
引数 $x を受け取り、$x * $x を return で返す関数 square を定義してください。
定義した後、square(3)・square(4)・square(5) の戻り値を 1 行ずつ出力してください。
期待される出力:
9 16 25
採点
php scripts/grade.php topics/function/ch03-return/drill/01-return-int/
ヒント
function square($x) { return $x * $x; }- 下で
echo square(3) . "\n";を 3 回書く
ドリル 02 — full_name($first, $last) を連結して返す
問題
引数 $first・$last を受け取り、半角スペース 1 個でつないだ文字列を return で返す関数 full_name を定義してください。
定義した後、戻り値を変数で受け取り、echo で 2 件分出力してください。
太郎,山田花子,鈴木
期待される出力:
太郎 山田 花子 鈴木
採点
php scripts/grade.php topics/function/ch03-return/drill/02-return-string/
ヒント
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
採点
php scripts/grade.php topics/function/ch03-return/drill/03-return-bool/
ヒント
function is_even($n) { return $n % 2 === 0; }for ($i = 1; $i <= 5; $i++) { ... }でループis_even($i) ? "true" : "false"で文字に変換して出力