与大多数支持命令式编程的语言一样,PHP 中的函数可能具有一个或多个具有默认值的参数。因此,可以调用此类函数,而无需向其传递任何值。如果没有要传递的值,则函数将采用其默认值进行处理。如果函数调用确实提供了值,则默认值将被覆盖。
这样的函数可以用不同的方式调用 -
示例 1
在这里,我们定义了一个名为 greeting() 的函数,它有两个参数,两个参数都以 string 作为默认值。我们通过传递一个字符串、两个字符串并且不带任何参数来调用它。
它将产生以下输出 -
Hello world
Thank you world
Welcome back
PHP world
Thank you world
Welcome back
PHP world
示例 2
您可以定义一个函数,其中仅包含一些具有默认值的参数,而其他参数必须将值传递到该参数。
它将产生以下输出 -
Thank you World
Welcome back
Welcome back
第一次调用(不带参数)会引发 ArgumentCountError,因为您必须为第一个参数传递值。如果只传递了一个值,则列表中的第一个参数将使用该值。
但是,如果在没有 defaults 的参数之前声明带有 default 的参数,则只有在传递了两者的值时才能调用此类函数。你不能出现第一个参数使用 default,而第二个参数使用传递的值的情况。
greeting() 函数现在有 $arg 1 和 default,$arg 2 没有任何默认值。
如果您传递字符串 “PHP” -
如果打算将结果打印为 “Hello PHP”,则会显示以下错误消息。
PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function
greeting(), 1 passed in hello.php on line 10 and exactly 2 expected
greeting(), 1 passed in hello.php on line 10 and exactly 2 expected
示例 3
让我们定义一个函数 percent() 来计算三个科目的分数百分比。
假设每个主题中的分数满分 100,则函数定义中的 $total 参数的默认值为 300。
它将产生以下输出 -
Marks obtained:
Physics = 50 Chemistry = 60 Maths = 70
Percentage = 60
Physics = 50 Chemistry = 60 Maths = 70
Percentage = 60
但是,如果每个科目的最大分数为 50,则必须将第四个值传递给函数,否则百分比将从 300 而不是 150 中计算出来。
它将产生以下输出 -
Marks obtained:
Physics = 30 Chemistry = 35 Maths = 40
Percentage = 70
Physics = 30 Chemistry = 35 Maths = 40
Percentage = 70