PHP 函数全面解析
1. 什么是 PHP 函数?
PHP 函数(Function) 是 一组可重复执行的代码块,用于提高代码的 复用性 和 模块化。
PHP 函数分类
- 内置函数(Built-in Functions) ➝ 例如
strlen(),array_push(),date() - 用户自定义函数(User-defined Functions) ➝ 由开发者定义的函数
2. PHP 自定义函数
函数语法
function 函数名($参数1, $参数2, ...) {
// 函数体
return 结果; // 可选
}
✅ 注意
- 函数名 必须以 字母或下划线开头(不能以数字开头)
- 函数名不区分大小写
- 参数 可选
return语句 用于返回值(可选)
示例 1:无参数、无返回值
<?php
function sayHello() {
echo "Hello, PHP!<br>";
}
sayHello();
?>
🔹 输出:
Hello, PHP!
示例 2:带参数的函数
<?php
function greet($name) {
echo "Hello, " . $name . "!<br>";
}
greet("Alice");
greet("Bob");
?>
🔹 输出:
Hello, Alice!
Hello, Bob!
示例 3:有返回值的函数
<?php
function add($a, $b) {
return $a + $b;
}
$result = add(5, 10);
echo "5 + 10 = " . $result;
?>
🔹 输出:
5 + 10 = 15
示例 4:默认参数
<?php
function greet($name = "Guest") {
echo "Welcome, " . $name . "!<br>";
}
greet(); // 使用默认值 "Guest"
greet("Alice"); // 传入参数
?>
🔹 输出:
Welcome, Guest!
Welcome, Alice!
3. 函数参数详解
1. 传值参数(默认)
- 传递变量的 副本,函数内部修改不会影响原变量
<?php
function increment($num) {
$num++;
echo "函数内部:$num <br>";
}
$value = 5;
increment($value);
echo "函数外部:$value <br>";
?>
🔹 输出:
函数内部:6
函数外部:5
2. 传引用参数(&)
- 传递 变量本身,函数内部修改会影响原变量
<?php
function incrementRef(&$num) {
$num++;
}
$value = 5;
incrementRef($value);
echo "最终值:$value";
?>
🔹 输出:
最终值:6
4. 可变参数(可传入不确定个数的参数)
1. func_get_args()(PHP 5 及之前)
<?php
function sumAll() {
$args = func_get_args();
return array_sum($args);
}
echo sumAll(1, 2, 3, 4, 5);
?>
🔹 输出:
15
2. ...$args(PHP 5.6+)
<?php
function sumAll(...$numbers) {
return array_sum($numbers);
}
echo sumAll(1, 2, 3, 4, 5);
?>
🔹 输出:
15
5. 匿名函数(Lambda/Closure)
PHP 匿名函数(又称 闭包 Closure),即 没有名称的函数,常用于回调。
<?php
$greet = function($name) {
return "Hello, $name!";
};
echo $greet("Alice");
?>
🔹 输出:
Hello, Alice!
6. 箭头函数(PHP 7.4+)
- 语法更简洁,自动继承外部变量
<?php
$add = fn($x, $y) => $x + $y;
echo $add(5, 10);
?>
🔹 输出:
15
7. 递归函数(函数调用自身)
计算阶乘
<?php
function factorial($n) {
if ($n == 1) {
return 1;
}
return $n * factorial($n - 1);
}
echo "5 的阶乘:" . factorial(5);
?>
🔹 输出:
5 的阶乘:120
8. 函数的作用域
| 作用域 | 说明 |
|---|---|
| 全局作用域 | 定义在函数外部,全局可用 |
| 局部作用域 | 定义在函数内部,仅函数内可用 |
global 关键字 | 让函数内部访问全局变量 |
$GLOBALS 数组 | 访问全局变量的数组 |
示例
<?php
$x = 10; // 全局变量
function test() {
global $x;
echo "函数内部:$x";
}
test();
?>
🔹 输出:
函数内部:10
9. 函数最佳实践
✅ 函数名应有意义(calculateTax() ✅,func1() ❌)
✅ 尽量使用 return 代替 echo(提高复用性)
✅ 避免过长函数(单一职责原则)
✅ 使用 ...$args 处理不确定参数
10. 练习题
1️⃣ 编写一个 isEven($num) 函数,返回 true 或 false
2️⃣ 编写一个 findMax($arr) 函数,返回数组的最大值
3️⃣ 编写一个递归函数 sumToN($n),计算 1 + 2 + ... + n
🔗 相关参考资料
更多详细内容请关注其他相关文章!