Appearance
8.2 形参、实参、默认参数
函数的参数是函数与外部世界交互的桥梁,了解参数的使用对于编写灵活的函数非常重要。
形参和实参
- 形参:函数定义时声明的参数,是函数内部使用的变量
- 实参:函数调用时传递的参数,是实际的值
默认参数
默认参数允许在函数定义时为参数设置默认值,当调用函数时不传递该参数时,会使用默认值。
示例代码
php
<?php
// 基本参数传递
function greet($name) {
echo "Hello, $name!<br>";
}
// 调用函数,传递实参
greet("张三"); // "张三" 是实参
// 默认参数
function sayHello($name = "World") {
echo "Hello, $name!<br>";
}
// 调用函数,不传递参数
sayHello(); // 使用默认值 "World"
// 调用函数,传递参数
sayHello("PHP"); // 使用传递的值 "PHP"
// 多个参数,部分有默认值
function calculate($num1, $num2, $operator = "+") {
switch ($operator) {
case "+":
return $num1 + $num2;
case "-":
return $num1 - $num2;
case "*":
return $num1 * $num2;
case "/":
return $num1 / $num2;
default:
return "无效的运算符";
}
}
echo "10 + 5 = " . calculate(10, 5) . "<br>"; // 使用默认运算符 "+"
echo "10 - 5 = " . calculate(10, 5, "-") . "<br>"; // 指定运算符 "-"
// 可变数量的参数(PHP 5.6+)
function sum(...$numbers) {
$total = 0;
foreach ($numbers as $number) {
$total += $number;
}
return $total;
}
echo "1 + 2 + 3 = " . sum(1, 2, 3) . "<br>";
echo "4 + 5 + 6 + 7 = " . sum(4, 5, 6, 7) . "<br>";
// 引用传递
function increment(&$num) {
$num++;
echo "函数内部: $num<br>";
}
$value = 5;
echo "调用前: $value<br>";
increment($value);
echo "调用后: $value<br>";
?>注意事项
- 默认参数必须放在非默认参数的后面
- 可以使用
...运算符接收可变数量的参数 - 使用引用传递(&)可以在函数内部修改外部变量
- 参数传递时,PHP 会进行值复制,除非使用引用传递
练习
- 创建一个函数,计算矩形的面积,宽度和高度为参数,高度默认为10
- 创建一个函数,接收任意数量的数字,返回它们的平均值
- 创建一个函数,使用引用传递修改外部变量的值
