概要
引数 (argument) は 関数の外から中へ値を渡すための入口 だ。引数がない関数は毎回まったく同じ出力しかできないが、function greet($name) のように仮引数を 1 つ用意するだけで、greet("太郎") greet("花子") のように呼び出しごとに違う値を扱えるようになる。「同じ処理だが対象が違う」場面をすべて 1 つの関数に統合できるのが、関数を引数化する最大の動機になる。
PHP では function f($x) { ... } の $x を 仮引数、f(10) の 10 を 実引数 と呼ぶ。仮引数は左から順に対応付けられ、複数並べる場合は ($a, $b, $c) のようにカンマで区切る。実引数を渡し忘れると基本的にエラーになるので、定義側の引数の数と呼び出し側の値の数は揃える必要がある。
このチャプターで覚えておくべき落とし穴は スコープ。仮引数 $name は関数の { } の中だけで有効で、外から echo $name; しても未定義扱いになる。「関数の中の世界と外の世界は別」という感覚を、この段階で掴んでおくと後の $this (class トピック ch05) や static (class-advanced トピック ch06) の理解が一段速くなる。
学習目標
function f($x) { ... }で引数 1 個を受け取れるfunction f($a, $b) { ... }で複数引数を並べられる- 呼び出し時に渡した値が関数の中で使える
ドリル
| no | 内容 |
|---|---|
| 01 | greet($name) を 3 人分呼ぶ |
| 02 | add($a, $b) で合計を出力する |
| 03 | describe($name, $age, $city) を作る |
📝 演習: ドリル 01 — greet($name) を 3 人分呼ぶ
問題
引数 $name を 1 個受け取って こんにちは <name> さん を 1 行出力する関数 greet を定義してください。
定義した後、次の 3 人分の挨拶を順に呼んでください。
太郎花子次郎
期待される出力:
こんにちは 太郎 さん
こんにちは 花子 さん
こんにちは 次郎 さんヒント
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ヒント
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 ) - 大阪ヒント
function describe($name, $age, $city) { ... }- 中で
echo $name . " ( " . $age . " ) - " . $city . "\n"; - 下で
describe("太郎", 20, "東京");のように呼ぶ