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" がデフォルト値となります。このパターンは、呼び出し元が常にすべての引数を指定する必要がないため、関数をより柔軟にします。
チャレンジ
簡単2 行の入力を読み取ります:
- 商品名(例:
Laptop) - 数量(例:
5) — この入力は空の場合があります
formatOrder という名前の関数を作成します。この関数は 2 つのパラメータを受け取ります:$product(必須)と $quantity(オプション、デフォルトは 1)。この関数は以下の形式の文字列を return する必要があります:
Order: [quantity]x [product]数量入力が空の場合は、商品名のみで関数を呼び出します(デフォルト数量を使用)。それ以外の場合、両方の値で呼び出します。
返された結果を出力します。
例 1:
入力が Laptop と 5 の場合、出力は次のようになります:
Order: 5x Laptop例 2:
入力が Keyboard と空行の場合、出力は次のようになります:
Order: 1x Keyboard例 3:
入力が Monitor と 3 の場合、出力は次のようになります:
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;
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators