PHP 默认参数值函数

2025年3月27日 | 阅读 4 分钟

PHP 允许你定义 C++ 风格的默认参数值。在这种情况下,如果你不为函数传递任何值,它将使用默认参数值。这有助于减少代码中条件检查的需要,并使其更加灵活。

指定默认值的语法

为参数分配默认值的语法非常简单。在定义函数时,使用“=”运算符将值分配给参数。

语法

  • 函数名称为 functionName。
  • 函数参数为 $param1 和 $param2。
  • 默认值为 defaultValue 和 anotherValue,分别对应。

规则和限制

默认值必须是常量

参数的默认值应该是常量表达式,例如字符串、数字或数组。变量和动态表达式不被视为默认值。

示例

立即执行

输出

50

默认参数应放在非默认参数之后

如果一个函数既有默认参数又有非默认参数,那么非默认参数应该先写。

示例

立即执行

输出

Hello, John!

默认参数使用示例

单个默认参数

让我们看一个在函数中使用 PHP 默认参数的简单示例。

示例 1

立即执行

输出

Hello Sonoo
Hello Ram
Hello Vimal

注意:自 PHP 5 起,您也可以将默认参数值与引用传递(call by reference)结合使用。

说明

  • 参数 $name 的默认值为“Ram”。
  • 当不带参数调用 sayHello() 函数时,将使用默认值。
  • 例如,如果传递了参数“Vimal,那么它将覆盖默认值。
  • 这种方法对于定制用户体验和维护 备份 功能非常有用。

示例 2

立即执行

输出

Greeting: Sonoo Jaiswal
Greeting: Rahul Jaiswal
Greeting: Michael Clark

说明

  • greeting 函数有两个参数,$first 和 $last。这些参数的默认值分别为“Sonoo”和“Jaiswal”。
  • 当调用函数且未提供值时,将使用这些值。
  • 如果没有传递任何参数,则使用默认值“Sonoo Jaiswal”。
  • 如果传递了一个参数,那么第二个参数将覆盖第一个参数并保留其默认值。
  • 如果同时提供了两个参数,那么它们将被默认值替换。

Example3

立即执行

输出

Addition is: 20
Addition is: 30
Addition is: 80

说明

  • add 函数有两个参数,$n1 和 $n2。这两个参数的默认值都为 10。如果没有传递任何参数,则使用默认值。
  • 该函数将 $n1 和 $n2 的和存储在 $n3 中,并通过 echo 以“Addition is: $n3”的格式打印结果。
  • add() 使用两个参数的默认值($n1=10、$n2=10)给出 20 的和。
  • add(20) 用 20 覆盖 $n1,而 $n2 保留其默认值 10,总和变为 30。
  • add(40,40) 用 40 覆盖 $n1 和 $n2,总和为 80。

示例 4

立即执行

输出

10
15

说明

  • multiply 函数考虑两个参数,$number 和 $factor。如果在调用函数时未提供第二个参数,则使用默认值 2 的 $factor 参数。
  • 该函数返回 $number 和 $factor 的乘积。如果为 $factor 提供了值,则会覆盖默认值。
  • multiply(5) 用一个参数调用,因此 $number 的值为 5,$factor 使用其默认值 2,结果将是 5 * 2 = 10。
  • multiply(5, 3) 用两个参数调用,因此 $number 的值为 5,$factor 的值为 3,结果将是 5 * 3 = 15。

多个默认参数

示例 1

立即执行

输出

15 (5 + 10 by default)
8 (5 + 3, using default "add")
15 (5 * 3)
Invalid operation.

说明

  • 第一个参数 $a 是必需的,而 $a 和 $operation 的默认值分别为 10 和“add”。
  • 如果传递的参数较少,则函数将使用默认值来处理缺失的参数。
  • 这种灵活性允许用户选择性地更新行为,而无需手动指定所有参数。

示例 2

立即执行

输出

Name: User, Age: 30, Location: Unknown
Name: Alice, Age: 25, Location: Paris

说明

  • introduce 函数有三个参数,$name、$age 和 $location。这些函数的默认值分别为“User”、30 和“Unknown”。如果未提供相应的参数,则使用这些默认值。
  • 该函数以“Name: $name, Age: $age, Location: $location”的格式返回一个字符串,其中包含 $name、$age 和 $location 的值。
  • introduce() 在不带参数的情况下调用,因此所有参数都使用默认值“User”、30 和“Unknown”。
  • introduce("Alice", 25, "Paris") 在提供了所有参数的情况下调用,它会覆盖默认值:$name="Alice",$age=25,$location="Paris"。

下一个主题PHP 可变参数函数