採点されません。匿名です。 間違えることは学習の一部です。読むだけでもかまいません。

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"; // 9
  • return 値; で関数から値を返す
  • 呼び出し側で $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 * $xreturn で返す関数 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、奇数なら falsereturn で返す関数 is_even を定義してください。

定義した後、15 の各数値について次の形式で 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" で文字に変換して出力