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

引数を受け取る

テクノロジ系 / function (関数定義・引数・return・型宣言)

引数を受け取る

Lesson 7 / Chapter 2

引数がないと「同じ出力しかできない」

<?php
function greet() {
    echo "こんにちは 太郎\n";
}

greet();
  • これだと「太郎」しか挨拶できない
  • 名前を変えるたびに関数を書き直すのは無駄
  • 引数 で名前を外から受け取れるようにする

function f($x) { ... } で引数を 1 個受け取る

<?php
function greet($name) {
    echo "こんにちは " . $name . "\n";
}

greet("太郎");
greet("花子");

実行結果:

こんにちは 太郎
こんにちは 花子
  • ($name)$name引数
  • 呼び出すとき greet("太郎")"太郎"$name に入る

引数は何個でも並べられる

<?php
function add($a, $b) {
    echo $a + $b . "\n";
}

add(1, 2);  // 3
add(10, 5); // 15
  • カンマで区切って ($a, $b, $c, ...) のように書く
  • 呼び出すときも同じ数だけ値を渡す

引数の名前は関数の中だけで有効

<?php
function greet($name) {
    echo "こんにちは " . $name . "\n";
}

greet("太郎");
echo $name; // ← 関数の外なのでエラー (未定義)
  • 関数の { } の中で受け取った値を使う
  • 外から $name は見えない (スコープ)

このチャプターでできるようになること

function f($x) { ... } で引数 1 個を受け取れる

function f($a, $b) { ... } で複数引数を並べられる

✅ 呼び出し時に渡した値が関数の中で使える

✅ 引数の値を変えて何度でも呼び出せる

→ ドリルへ

考えてみよう

既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。

ドリル 01 — greet($name) を 3 人分呼ぶ

問題

引数 $name を 1 個受け取って こんにちは <name> さん を 1 行出力する関数 greet を定義してください。

定義した後、次の 3 人分の挨拶を順に呼んでください。

  • 太郎
  • 花子
  • 次郎

期待される出力:

こんにちは 太郎 さん
こんにちは 花子 さん
こんにちは 次郎 さん

採点

php scripts/grade.php topics/function/ch02-arguments/drill/01-one-arg/

ヒント

  • function greet($name) { ... }
  • 中で echo "こんにちは " . $name . " さん\n";
  • 下で greet("太郎"); greet("花子"); greet("次郎");

ドリル 02 — add($a, $b) で合計を出力

問題

引数 $a$b を受け取り、その合計を 1 行出力する関数 add を定義してください。

定義した後、標準入力から 2 行 (1 行に 1 つの整数) を読み、add を 1 回呼んで合計を出力してください。

入力例:

3
7

期待される出力:

10

採点

php scripts/grade.php topics/function/ch02-arguments/drill/02-two-args/

ヒント

  • function add($a, $b) { echo $a + $b . "\n"; }
  • $a = (int) trim(fgets(STDIN));
  • $b = (int) trim(fgets(STDIN));
  • add($a, $b);

ドリル 03 — describe($name, $age, $city) を作る

問題

引数 $name$age$city を受け取り、次の形式で 1 行出力する関数 describe を定義してください。

<name> ( <age> ) - <city>

定義した後、次の 2 件を順に呼んでください。

  • 太郎, 20, 東京
  • 花子, 25, 大阪

期待される出力:

太郎 ( 20 ) - 東京
花子 ( 25 ) - 大阪

採点

php scripts/grade.php topics/function/ch02-arguments/drill/03-three-args/

ヒント

  • function describe($name, $age, $city) { ... }
  • 中で echo $name . " ( " . $age . " ) - " . $city . "\n";
  • 下で describe("太郎", 20, "東京"); のように呼ぶ