- PHP 菜鸟教程
- PHP - 教程
- PHP - 简介
- PHP - 安装
- PHP - 历史
- PHP - 功能
- PHP - 语法
- PHP - Hello World
- PHP - 注释
- PHP - 变量
- PHP - echo 语句和 print 语句
- PHP - var_dump() 函数
- PHP - $ 和 $$ 变量
- PHP - 常量
- PHP - 魔术常量
- PHP – 数据类型
- PHP - 类型转换
- PHP - 类型戏法
- PHP - 字符串
- PHP - 布尔值
- PHP - 整数
- PHP - 文件和I/O
- PHP – 数学函数
- PHP - Heredoc & Nowdoc
- PHP - 复合类型
- PHP - 文件包含
- PHP - 日期和时间
- PHP - 标量类型声明
- PHP - 返回类型声明
- PHP 运算符
- PHP - 运算符类型
- PHP - 算术运算符示例
- PHP - 比较运算符示例
- PHP - 逻辑运算符示例
- PHP - 赋值运算符示例
- PHP – 字符串运算符
- PHP – 数组运算符
- PHP – 条件运算符示例
- PHP - Spread 运算符
- PHP - Null 合并运算符
- PHP - Spaceship 运算符
- PHP 控制语句
- PHP – 决策
- PHP - If…Else 语句
- PHP - Switch 语句
- PHP – 循环类型
- PHP - For 循环
- PHP - Foreach 循环
- PHP - While 循环
- PHP - do...While 循环
- PHP - Break 语句
- PHP - Continue 语句
- PHP 数组
- PHP - 数组
- PHP - 索引数组
- PHP - 关联数组
- PHP - 多维数组
- PHP - 数组函数
- PHP - 常量数组
- PHP 函数
- PHP - 函数
- PHP - 函数参数
- PHP - 按值调用
- PHP - 按引用调用
- PHP - 默认参数
- PHP - 命名参数
- PHP - 变量参数
- PHP - 返回值
- PHP - 传递函数
- PHP - 递归函数
- PHP - 类型提示
- PHP - 变量范围
- PHP - 严格类型
- PHP - 匿名函数
- PHP - 箭头( Arrow )函数
- PHP - 变量处理函数
- PHP - 局部变量
- PHP - 全局变量
- PHP 超全局变量
- PHP - 超全局变量
- PHP - $GLOBALS 变量
- PHP - $_SERVER 变量
- PHP - $_REQUEST 变量
- PHP - $_POST 变量
- PHP - $_GET 变量
- PHP - $_FILES 变量
- PHP - $_ENV 变量
- PHP - $_COOKIE 变量
- PHP - $_SESSION 变量
- PHP 文件处理
- PHP - 文件处理
PHP - 默认参数
与大多数支持命令式编程的语言一样,PHP 中的函数可能具有一个或多个具有默认值的参数。因此,可以调用此类函数,而无需向其传递任何值。如果没有要传递的值,则函数将采用其默认值进行处理。如果函数调用确实提供了值,则默认值将被覆盖。
function fun($arg1 = val1, $arg2 = val2) {
Statements;
}
这样的函数可以用不同的方式调用 -
fun(); # 函数将对这两个参数使用默认值
fun($x); # 函数将$x传递给arg1,并对arg2使用默认值
fun($x, $y); # 两个参数都使用传递的值
示例 1
在这里,我们定义了一个名为 greeting() 的函数,它有两个参数,两个参数都以 string 作为默认值。我们通过传递一个字符串、两个字符串并且不带任何参数来调用它。
<?php
function greeting($arg1="Hello", $arg2="world") {
echo $arg1 . " ". $arg2 . PHP_EOL;
}
greeting();
greeting("Thank you");
greeting("Welcome", "back");
greeting("PHP");
?>
它将产生以下输出 -
Hello world
Thank you world
Welcome back
PHP world
Thank you world
Welcome back
PHP world
示例 2
您可以定义一个函数,其中仅包含一些具有默认值的参数,而其他参数必须将值传递到该参数。
<?php
function greeting($arg1, $arg2="World") {
echo $arg1 . " ". $arg2 . PHP_EOL;
}
# greeting(); ## 这将引发 ArgumentCountError
greeting("Thank you");
greeting("Welcome", "back");
?>
它将产生以下输出 -
Thank you World
Welcome back
Welcome back
第一次调用(不带参数)会引发 ArgumentCountError,因为您必须为第一个参数传递值。如果只传递了一个值,则列表中的第一个参数将使用该值。
但是,如果在没有 defaults 的参数之前声明带有 default 的参数,则只有在传递了两者的值时才能调用此类函数。你不能出现第一个参数使用 default,而第二个参数使用传递的值的情况。
greeting() 函数现在有 $arg 1 和 default,$arg 2 没有任何默认值。
function greeting($arg1="Hello", $arg2) {
echo $arg1 . " ". $arg2 . PHP_EOL;
}
如果您传递字符串 “PHP” -
greeting("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。
<?php
function percent($p, $c, $m, $ttl=300) {
$per = ($p+$c+$m)*100/$ttl;
echo "Marks obtained: \n";
echo "Physics = $p Chemistry = $c Maths = $m \n";
echo "Percentage = $per \n";
}
percent(50, 60, 70);
?>
它将产生以下输出 -
Marks obtained:
Physics = 50 Chemistry = 60 Maths = 70
Percentage = 60
Physics = 50 Chemistry = 60 Maths = 70
Percentage = 60
但是,如果每个科目的最大分数为 50,则必须将第四个值传递给函数,否则百分比将从 300 而不是 150 中计算出来。
<?php
function percent($p, $c, $m, $ttl=300) {
$per = ($p+$c+$m)*100/$ttl;
echo "Marks obtained: \n";
echo "Physics = $p Chemistry = $c Maths = $m \n";
echo "Percentage = $per \n";
}
percent(30, 35, 40, 150);
?>
它将产生以下输出 -
Marks obtained:
Physics = 30 Chemistry = 35 Maths = 40
Percentage = 70
Physics = 30 Chemistry = 35 Maths = 40
Percentage = 70