【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();
?>

実行結果

プログラム解説

  1. 関数宣言$name = "ゲスト" でデフォルト設定。
  2. 呼び出し①"山田" を渡し文字列を生成。
  3. 呼び出し② – 引数省略 → $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

まとめ

  • デフォルト引数値は省略時の安全弁。あらかじめ適切な値をセットして関数を堅牢にする。
  • 必須→省略可の順で宣言、参照型デフォルトには注意。
  • 型宣言や可変長引数と組み合わせると、呼び出しインターフェースを柔軟に保ちつつバグを防止できる。