ZetCode

PHP 函数

最后修改于 2025 年 4 月 16 日

PHP 的 function 关键字用于声明可重用的代码块。 函数有助于将代码组织成逻辑单元,并避免重复。 它们可以接受参数并返回值,使它们成为多功能工具。

基本定义

函数是一个执行特定任务的命名代码块。 函数使用 function 关键字和名称来声明。

函数可以接受参数(输入)并返回值(输出)。 它们促进代码重用,并使程序更易于维护和理解。

语法: function name(参数) { 代码 }。 必须调用函数才能执行其代码。 可以使用不同的参数多次调用它们。

基本函数

此示例演示了一个简单的函数,该函数打印问候消息。

basic_function.php
<?php

declare(strict_types=1);

function greet() {
    echo "Hello, World!";
}

greet(); // Call the function

该代码定义了一个名为 greet 的函数,该函数输出一条消息。 使用其名称后跟括号来调用该函数。 这展示了最基本的函数结构,没有参数或返回值。

带参数的函数

此示例显示一个接受参数以自定义其输出的函数。

function_params.php
<?php

declare(strict_types=1);

function greetPerson(string $name) {
    echo "Hello, $name!";
}

greetPerson("Alice");
greetPerson("Bob");

函数 greetPerson 接受 $name 参数。 参数被类型提示为字符串。 该函数使用不同的名称调用两次,演示了参数的用法。 每次调用都会产生不同的输出。

返回值

此示例演示一个计算并返回值 的函数。

return_value.php
<?php

declare(strict_types=1);

function addNumbers(int $a, int $b): int {
    return $a + $b;
}

$result = addNumbers(5, 3);
echo "The sum is: $result";

addNumbers 函数接受两个整数并返回它们的总和。 返回类型在参数列表后声明为 int。 返回值存储在 $result 中并显示。 返回值使函数更灵活。

默认参数值

此示例显示了如何定义具有默认参数值的函数。

default_params.php
<?php

declare(strict_types=1);

function makeCoffee(string $type = "cappuccino") {
    echo "Making a cup of $type.\n";
}

makeCoffee();
makeCoffee("espresso");

函数 makeCoffee$type 参数具有默认值。 当不带参数调用时,它使用默认值。 当提供时,它使用指定的值。 默认参数使函数更灵活。

函数中的变量作用域

此示例演示了函数内部和外部变量作用域的差异。

variable_scope.php
<?php

declare(strict_types=1);

$globalVar = "I'm global";

function testScope() {
    $localVar = "I'm local";
    echo $localVar;
    // echo $globalVar; // This would cause an error
}

testScope();
echo $globalVar;

默认情况下,函数内部的变量具有局部作用域。 $localVar 只能在 testScope 中访问。 必须使用 global 关键字或 $GLOBALS 显式访问全局变量。

递归函数

此示例显示了一个递归函数,该函数调用自身来计算阶乘。

recursive.php
<?php

declare(strict_types=1);

function factorial(int $n): int {
    if ($n <= 1) {
        return 1;
    }
    return $n * factorial($n - 1);
}

echo "Factorial of 5 is: " . factorial(5);

factorial 函数使用较小的值调用自身,直到它到达基本情况($n <= 1)。 递归功能强大,但需要一个终止条件。 每次递归调用都会添加到调用堆栈中。

匿名函数

此示例演示了 PHP 中的匿名函数(闭包)。

anonymous.php
<?php

declare(strict_types=1);

$greet = function(string $name) {
    echo "Hello, $name!";
};

$greet("Charlie");

$numbers = [1, 2, 3, 4];
$squared = array_map(function($n) { return $n * $n; }, $numbers);
print_r($squared);

匿名函数定义时没有名称,并被分配给变量。 它们可以作为参数传递给其他函数,例如 array_map。 该示例展示了一个简单的闭包和与数组处理一起使用的闭包。 闭包对于回调很有用。

最佳实践

来源

PHP 函数文档

本教程介绍了 PHP 函数,并提供了实用示例,展示了 PHP 中函数的声明、参数、返回值和高级函数特性。

作者

我的名字是 Jan Bodnar,我是一个热情的程序员,拥有丰富的编程经验。 我从 2007 年开始撰写编程文章。 迄今为止,我撰写了 1,400 多篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出 所有 PHP 教程