PHP 函数全面解析
                           
天天向上
发布: 2025-03-19 21:48:50

原创
862 人浏览过

1. 什么是 PHP 函数?

PHP 函数(Function)一组可重复执行的代码块,用于提高代码的 复用性模块化

PHP 函数分类

  1. 内置函数(Built-in Functions) ➝ 例如 strlen(), array_push(), date()
  2. 用户自定义函数(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) 函数,返回 truefalse
2️⃣ 编写一个 findMax($arr) 函数,返回数组的最大值
3️⃣ 编写一个递归函数 sumToN($n),计算 1 + 2 + ... + n


🔗 相关参考资料

更多详细内容请关注其他相关文章!

发表回复 0

Your email address will not be published. Required fields are marked *