概要
デフォルト引数は 「呼び出し側が値を省略したときに自動的に使われる値」 を、関数の定義側で決めておく仕組みだ。function greet($name, $suffix = "さん") のように = 付きで宣言すると、greet("太郎") でも greet("太郎", "様") でも呼べるようになる。よく使う既定値を関数側に持たせておけば、呼び出し側のコードが短くなり、後から新しい引数を追加しても既存の呼び出しを壊さずに済む。
PHP の重要なルールは デフォルト値を持つ引数は必須引数より後ろに並べる こと。function f($a = 0, $b) のように必須引数を後ろに置くと、呼び出し時に $a だけ省略する書き方ができなくなって混乱する。「左から必須・右からデフォルト」の順序を守るのが基本になる。
このチャプターで補足として知っておきたいのが PHP 8 の 名前付き引数 だ。greet(name: "太郎", suffix: "様") のように名前で渡せば順序に縛られず、デフォルトを途中だけ上書きできる。設計時の選択肢として頭の片隅に置いておき、まずはデフォルト引数を「右から省略可能」のルールで安全に書ける状態を目指す。
学習目標
function f($x = 10) { ... }でデフォルト値を指定できる- 呼び出し側で引数を省略するとデフォルト値が使われる
- デフォルトを持つ引数は必須引数の 後ろ に並べる
ドリル
| no | 内容 |
|---|---|
| 01 | greet($name, $suffix = "さん") を作る |
| 02 | multiply($a, $b = 2) を作る |
📝 演習: ドリル 01 — greet($name, $suffix = "さん") を作る
問題
引数 $name と、デフォルト値 "さん" を持つ $suffix を受け取り、<name> <suffix> を 1 行出力する関数 greet を定義してください。
定義した後、次の順に呼んでください。
greet("太郎")(suffix を省略)greet("花子", "ちゃん")(suffix を指定)greet("田中", "様")(suffix を指定)
期待される出力:
太郎 さん
花子 ちゃん
田中 様ヒント
function greet($name, $suffix = "さん") { echo $name . " " . $suffix . "\n"; }- 呼び出し時に 2 つ目の引数を省略するとデフォルトの
"さん"が入る
📝 演習: ドリル 02 — multiply($a, $b = 2) を作る
問題
引数 $a と、デフォルト値 2 を持つ $b を受け取り、$a * $b を return で返す関数 multiply を定義してください。
定義した後、次の順に呼んで戻り値を 1 行ずつ出力してください。
multiply(5)(b を省略 → 2 倍)multiply(5, 3)(b を指定)multiply(7)(b を省略 → 2 倍)
期待される出力:
10
15
14ヒント
function multiply($a, $b = 2) { return $a * $b; }echo multiply(5) . "\n";のように戻り値を出力