デフォルトパラメータ値
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(required)と$quantity(optional、デフォルトは1)。この関数は、次の形式の文字列をreturnする必要があります:
Order: [quantity]x [product]数量の入力が空の場合は、商品の名前だけを指定して(デフォルトの数量を使用して)関数をcallします。それ以外の場合は、両方の値を指定してcallします。
returnされた結果をPrintします。
例1:
入力がLaptopと5の場合、出力は次のようになります:
Order: 5x Laptop例2:
入力がKeyboardと空行の場合、出力は次のようになります:
Order: 1x Keyboard例3:
入力がMonitorと3の場合、出力は次のようになります:
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;
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: PHPオンラインコンパイラ