Menu
Coddy logo textTech

デフォルトパラメータ値

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(required)と$quantity(optional、デフォルトは1)。この関数は、次の形式の文字列をreturnする必要があります:

Order: [quantity]x [product]

数量の入力が空の場合は、商品の名前だけを指定して(デフォルトの数量を使用して)関数をcallします。それ以外の場合は、両方の値を指定してcallします。

returnされた結果をPrintします。

例1:

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

Order: 5x Laptop

例2:

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

Order: 1x Keyboard

例3:

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

Order: 3x Monitor

自分で試してみよう

<?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腕試し

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

基礎のすべてのレッスン

自分で練習してみよう: PHPオンラインコンパイラ