
【6日でできるPHP入門】デフォルト引数値
引数に“あらかじめ決めておく値”を設定できる―それが デフォルト引数値 です。関数呼び出し時に値を省略しても安全に動作させられるうえ、呼び出し側コードを短く保つことができます。ここでは PHP でデフォルト引数値を活用する方法を、具体例とともに学びましょう。

1.デフォルト引数値の基礎
1.1. 定義のルール
キーワード | 役割 |
---|---|
function | 関数を宣言する。 |
= | 引数宣言時にデフォルト値を結び付ける。 |
return | 戻り値を返し処理を終了する。 |
echo | 文字列をブラウザへ出力する。 |
構文
function 関数名($param = デフォルト値, …){ … }
- デフォルト値を持つ引数は 右側に寄せて 宣言する(必須引数 → 省略可引数の順)。
- 文字列は
" "
、数値はそのまま、配列は[]
で指定可能。
1.2. メリットと注意点
項目 | メリット | 注意点 |
---|---|---|
可読性 | 省略可能な引数が明示され意図が伝わる。 | 省略が多すぎると何が渡るか不明確 |
保守性 | 後方互換が保てるため関数改修が容易 | デフォルト値を参照型にすると意図しない共有が起き得る。 |
バグ低減 | 未指定エラーを防止 | 必須引数より前にデフォルト値を置けない。 |
2.サンプルコードで学ぶデフォルト引数値
2.1. あいさつを生成する
ファイル名: lesson46_1.php
<?php
// 名前を省略したら「ゲスト」へあいさつ
function say_hello(string $name = "ゲスト"): string {
return "こんにちは、{$name} さん!<br>";
}
// 引数あり
echo say_hello("山田");
// 引数なし(デフォルト値利用)
echo say_hello();
?>
実行結果

プログラム解説
- 関数宣言 –
$name = "ゲスト"
でデフォルト設定。 - 呼び出し① –
"山田"
を渡し文字列を生成。 - 呼び出し② – 引数省略 →
$name
には"ゲスト"
が自動設定。
2.2. 消費税計算 calc_tax
ファイル名: lesson46_2.php
<?php
// 税率を省略したら 10% を適用
function calc_tax(int|float $price, float $rate = 0.10): float {
return $price * (1 + $rate);
}
echo "*** calc_tax 関数 ***<br>";
echo "税込価格: " . calc_tax(2000) . " 円<br>"; // デフォルト 10%
echo "税込価格: " . calc_tax(2000, 0.08) . " 円<br>"; // 8% 指定
?>
実行結果

使用した命令 | ポイント |
---|---|
int|float $price | $price には 整数(int)または小数(float) どちらも受け取れるようになっています。 |
float $rate = 0.10 | デフォルト税率 10% |
return | 計算結果を呼び出し元へ |
3.応用テクニック
3.1. 配列の初期化にデフォルト値を使う
ファイル名: lesson46_3.php
<?php
function create_user(string $name, array $options = []): array {
// デフォルト設定とマージ
$defaults = [
"role" => "member",
"active" => true
];
return $defaults + $options + ["name" => $name];
}
print_r(create_user("佐藤"));
print("<br>");
print_r(create_user("鈴木", ["role" => "admin"]));
?>
実行結果

3.2. 可変長引数×デフォルト値
可変長部分にはデフォルト値を付けられませんが、前 の引数に設定できます。
function sum_with_base(int $base = 0, int ...$nums): int {
return $base + array_sum($nums);
}
echo sum_with_base(10, 1, 2, 3); // 16
echo sum_with_base(); // 0
まとめ
- デフォルト引数値は省略時の安全弁。あらかじめ適切な値をセットして関数を堅牢にする。
- 必須→省略可の順で宣言、参照型デフォルトには注意。
- 型宣言や可変長引数と組み合わせると、呼び出しインターフェースを柔軟に保ちつつバグを防止できる。