概要

デフォルト引数は 「呼び出し側が値を省略したときに自動的に使われる値」 を、関数の定義側で決めておく仕組みだ。function greet($name, $suffix = "さん") のように = 付きで宣言すると、greet("太郎") でも greet("太郎", "様") でも呼べるようになる。よく使う既定値を関数側に持たせておけば、呼び出し側のコードが短くなり、後から新しい引数を追加しても既存の呼び出しを壊さずに済む。

PHP の重要なルールは デフォルト値を持つ引数は必須引数より後ろに並べる こと。function f($a = 0, $b) のように必須引数を後ろに置くと、呼び出し時に $a だけ省略する書き方ができなくなって混乱する。「左から必須・右からデフォルト」の順序を守るのが基本になる。

このチャプターで補足として知っておきたいのが PHP 8 の 名前付き引数 だ。greet(name: "太郎", suffix: "様") のように名前で渡せば順序に縛られず、デフォルトを途中だけ上書きできる。設計時の選択肢として頭の片隅に置いておき、まずはデフォルト引数を「右から省略可能」のルールで安全に書ける状態を目指す。

学習目標

ドリル

no 内容
01 greet($name, $suffix = "さん") を作る
02 multiply($a, $b = 2) を作る

演習: ドリル 01 — greet($name, $suffix = "さん") を作る

問題

引数 $name と、デフォルト値 "さん" を持つ $suffix を受け取り、<name> <suffix> を 1 行出力する関数 greet を定義してください。

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

  1. greet("太郎") (suffix を省略)
  2. greet("花子", "ちゃん") (suffix を指定)
  3. greet("田中", "様") (suffix を指定)

期待される出力:

太郎 さん
花子 ちゃん
田中 様

ヒント

演習: ドリル 02 — multiply($a, $b = 2) を作る

問題

引数 $a と、デフォルト値 2 を持つ $b を受け取り、$a * $breturn で返す関数 multiply を定義してください。

定義した後、次の順に呼んで戻り値を 1 行ずつ出力してください。

  1. multiply(5) (b を省略 → 2 倍)
  2. multiply(5, 3) (b を指定)
  3. multiply(7) (b を省略 → 2 倍)

期待される出力:

10
15
14

ヒント

この章を AI に聞く

  1. 「ch04 — デフォルト引数」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch04 — デフォルト引数」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch04 — デフォルト引数」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

🎉 受講お疲れさまでした!

ch04 — デフォルト引数」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE