引数を受け取る
テクノロジ系 / 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, "東京");のように呼ぶ