Menu
Coddy logo textTech

Default Parameter Values

CoddyのPHPジャーニー「基礎」セクションの一部 — レッスン 64/71。

時には、引数が提供されない場合に、関数パラメータにフォールバック値を持たせたいことがあります。デフォルトパラメータ値により、呼び出し元が指定しない場合のパラメータの値を定義できます。

デフォルト値を設定するには、関数宣言内で直接 = 演算子を使用して割り当てます:

<?php
function greet($name = "Guest") {
    echo "Hello, $name!\n";
}

greet("Alice");
greet();
?>

これは以下を出力します:

Hello, Alice!
Hello, Guest!

greet("Alice") を呼び出すと、引数がデフォルトを上書きします。引数なしで greet() を呼び出すと、PHP は "Guest" を代わりに使用します。

必須パラメータとオプションのパラメータを混在させることができますが、デフォルト値を持つパラメータは必須のパラメータの後に置く必要があります:

<?php
function createUser($name, $role = "member") {
    return "$name is a $role";
}

echo createUser("Alice") . "\n";
echo createUser("Bob", "admin");
?>

これは以下を出力します:

Alice is a member
Bob is a admin

最初の引数 $name は必須ですが、$role は指定されていない場合に "member" がデフォルト値となります。このパターンは、呼び出し元が常にすべての引数を指定する必要がないため、関数をより柔軟にします。

challenge icon

チャレンジ

簡単

2 行の入力を読み取ります:

  1. 商品名(例: Laptop
  2. 数量(例: 5) — この入力は空の場合があります

formatOrder という名前の関数を作成します。この関数は 2 つのパラメータを受け取ります:$product(必須)と $quantity(オプション、デフォルトは 1)。この関数は以下の形式の文字列を return する必要があります:

Order: [quantity]x [product]

数量入力が空の場合は、商品名のみで関数を呼び出します(デフォルト数量を使用)。それ以外の場合、両方の値で呼び出します。

返された結果を出力します。

例 1:

入力が Laptop5 の場合、出力は次のようになります:

Order: 5x Laptop

例 2:

入力が Keyboard と空行の場合、出力は次のようになります:

Order: 1x Keyboard

例 3:

入力が Monitor3 の場合、出力は次のようになります:

Order: 3x Monitor

チートシート

デフォルトパラメータ値により、引数が提供されない場合にファンクションパラメータのフォールバック値を定義できます。

デフォルト値を設定するには、関数宣言内で=を使用して割り当てます:

<?php
function greet($name = "Guest") {
    echo "Hello, $name!\n";
}

greet("Alice");  // Hello, Alice!
greet();         // Hello, Guest!
?>

必須パラメータとオプションのパラメータを混在させる場合、デフォルト値を持つパラメータは必須のパラメータの後に置く必要があります:

<?php
function createUser($name, $role = "member") {
    return "$name is a $role";
}

echo createUser("Alice");           // Alice is a member
echo createUser("Bob", "admin");    // Bob is a admin
?>

自分で試してみよう

<?php
// 入力を読み込む
$product = trim(fgets(STDIN));
$quantity = trim(fgets(STDIN));

// TODO: $product(必須)と $quantity(オプション、デフォルトは1)を持つ formatOrder 関数を作成
// 関数は "Order: [quantity]x [product]" 形式の文字列を返すこと


// TODO: quantity が空かどうかによって関数を適切に呼び出す
// quantity が空の場合は product のみで呼び出す(デフォルトを使用)
// それ以外の場合は product と quantity の両方で呼び出す


// 結果を出力
echo $result;
?>
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン