Menu
CoddyTech

默认参数值

本课属于 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

挑战

简单

读取两行输入:

  1. 一个产品名称(例如,Laptop)
  2. 一个数量(例如,5)。这一行输入可以为空

创建一个名为 formatOrder 的函数,它接受两个参数:$product(必需)和 $quantity(可选,默认值为 1)。函数应返回一个符合以下格式的字符串:

Order: [quantity]x [product]

如果数量输入为空,只传入产品名称来调用函数(使用默认数量)。否则,传入这两个值来调用函数。

打印返回的结果。

示例 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:创建 formatOrder 函数,包含必填参数 $product 和可选参数 $quantity(默认值为 1)
// 函数应返回一个格式为 "Order: [quantity]x [product]" 的字符串


// TODO:根据 quantity 是否为空,以适当方式调用函数
// 如果 quantity 为空,只传入 product 调用函数(使用默认值)
// 否则,同时传入 product 和 quantity 调用函数


// 输出结果
echo $result;
?>
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: PHP 在线编译器