PHP 函数


PHP 函数

简介

函数是在程序中可重复使用的代码块。在 PHP 中,函数可以通过 function 关键字来定义和声明。函数的一些特性包括:

  • 函数名不区分大小写
  • 函数可以有参数和默认值
  • 函数可以返回值
  • 函数可以使用全局变量

声明函数

function functionName($arg1, $arg2 = null) {
    // 函数体
}

函数名可以包含字母、数字和下划线,必须以字母或下划线开头。参数是可选的,可以有默认值。

调用函数

对于上面的函数,可以通过以下方式调用:

functionName($val1, $val2);

返回值

函数可以使用 return 语句返回值。例如,下面的函数返回两个数字的和:

function addNumbers($num1, $num2) {
    $sum = $num1 + $num2;
    return $sum;
}

可以使用以下方式调用此函数:

$result = addNumbers(5, 10); // $result 值为 15

函数作用域

变量可以在不同的作用域中定义和使用。在函数内部定义的变量只能在函数内部使用。在函数外部定义的变量则是全局变量,可以在函数内部和外部使用。

$globalVariable = 10;

function testFunction() {
    $localVariable = 5;
    global $globalVariable; // 变量声明为全局变量
    echo $globalVariable; // 输出 10
    echo $localVariable; // 输出 5
}

testFunction();
echo $globalVariable; // 输出 10

在上面的例子中,testFunction 函数中的 $localVariable 变量只能在该函数作用域内使用。global 关键字用于将 $globalVariable 声明为全局变量,因此在函数内部也可以使用。

参数传递

在 PHP 中,函数可以接受任意类型的参数,包括标量和复合类型。参数可以通过值传递或引用传递。

值传递

使用值传递时,函数会拷贝参数的值并在函数内部使用。这意味着函数中对参数值的修改不会影响到函数外部。

function addOne($num) {
    $num += 1;
    return $num;
}

$num = 5;
$newNum = addOne($num); // $num 值为 5,$newNum 值为 6

引用传递

使用引用传递时,函数会直接使用参数的引用(地址),而不是拷贝参数的值。这意味着函数中对参数的修改会影响到函数外部。

function addOneByReference(&$num) {
    $num += 1;
}

$num = 5;
addOneByReference($num); // $num 值为 6

在函数声明中,参数前需要加上 & 符号。调用函数时也需要使用相同的符号。

默认参数

函数的参数可以有默认值。这些参数可以在调用函数时被省略。

function sayHello($name = 'World') {
    echo "Hello, " . $name . "!";
}

sayHello(); // 输出 'Hello, World!'
sayHello('John'); // 输出 'Hello, John!'

可变数量的参数

有时需要传递可变数量的参数。PHP 通过使用 func_num_args() 函数和 func_get_arg() 函数实现这一功能。

function addNumbers() {
    $args = func_num_args();
    $sum = 0;
    for ($i = 0; $i < $args; $i++) {
        $sum += func_get_arg($i);
    }
    return $sum;
}

$result = addNumbers(1, 2, 3, 4); // $result 值为 10

func_num_args() 函数返回参数的数量。func_get_arg($i) 函数返回第 $i 个参数的值。

结论

在 PHP 中,函数是非常重要的一种结构。通过函数,可以将可重用的代码块封装起来,并简化代码的编写和维护。函数可以有参数和返回值,可以使用全局变量,并支持值传递和引用传递。函数也可以有默认参数和可变数量的参数。