ZetCode

PHP return 关键字

最后修改于 2025 年 4 月 16 日

PHP 的 return 关键字对于函数和方法至关重要。它终止函数执行并将一个值返回给调用者。如果没有 return,函数将无法提供结果。本教程涵盖了在 PHP 中使用 return 的所有方面。

基本定义

return 语句立即结束函数执行。它可以返回任何有效的 PHP 值,包括数组和对象。当调用 return 时,控制权返回给调用代码。

没有显式 return 语句的函数返回 NULL。Return 可以在函数中的任何位置出现,但通常出现在末尾。可以有多个返回点,但这可能会降低可读性。

语法:return 表达式;return; 用于空返回。表达式可以是任何有效的 PHP 值或变量。返回类型声明可以强制执行特定的返回类型。

基本函数返回

此示例显示了一个返回计算值的简单函数。

basic_return.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 中。这演示了最基本的 return 用法。

返回不同的类型

此示例显示了从函数返回不同数据类型。

return_types.php
<?php

declare(strict_types=1);

function getUserData(string $type) {
    if ($type === 'name') {
        return 'John Doe';
    } elseif ($type === 'age') {
        return 30;
    } elseif ($type === 'active') {
        return true;
    }
    return null;
}

echo "Name: " . getUserData('name') . "\n";
echo "Age: " . getUserData('age') . "\n";
var_dump(getUserData('invalid'));

该函数根据输入返回不同的类型。在没有严格的返回类型的情况下,PHP 允许这种灵活性。最终的返回提供了一个默认的 null 值。这展示了 PHP 的动态类型能力。

早期返回模式

此示例演示了使用早期返回进行验证。

early_return.php
<?php

declare(strict_types=1);

function processOrder(array $order): ?string {
    if (empty($order['items'])) {
        return 'Error: No items in order';
    }
    
    if ($order['total'] <= 0) {
        return 'Error: Invalid order total';
    }
    
    // Process valid order
    return null; // No error
}

$result = processOrder(['items' => [], 'total' => 0]);
echo $result ?? 'Order processed successfully';

该函数检查条件,如果发现问题则提前返回。这避免了验证逻辑的深度嵌套。最终的返回表示成功。早期返回使代码更具可读性和可维护性。

返回数组

此示例显示了从函数返回一个数组。

return_array.php
<?php

declare(strict_types=1);

function getCoordinates(): array {
    return [
        'latitude' => 40.7128,
        'longitude' => -74.0060,
        'city' => 'New York'
    ];
}

$coords = getCoordinates();
echo "Latitude: {$coords['latitude']}, Longitude: {$coords['longitude']}";

该函数返回一个包含多个值的关联数组。数组通常用于返回分组数据。调用者可以单独访问数组元素。这对于返回复杂的数据结构很有用。

返回类型声明

此示例演示了严格的返回类型声明。

return_types_declaration.php
<?php

declare(strict_types=1);

function divide(float $a, float $b): float {
    if ($b === 0.0) {
        throw new InvalidArgumentException('Cannot divide by zero');
    }
    return $a / $b;
}

try {
    $result = divide(10.0, 2.0);
    echo "Result: " . $result;
} catch (InvalidArgumentException $e) {
    echo "Error: " . $e->getMessage();
}

该函数声明它将返回一个 float 值。尝试返回另一种类型将导致错误。类型声明使代码更具可预测性。它们有助于在开发期间而不是运行时捕获错误。

返回对象

此示例显示了从函数返回一个对象实例。

return_object.php
<?php

declare(strict_types=1);

class User {
    public string $name;
    public int $age;
    
    public function __construct(string $name, int $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

function createUser(string $name, int $age): User {
    return new User($name, $age);
}

$user = createUser('Alice', 25);
echo "User: {$user->name}, Age: {$user->age}";

该函数创建并返回一个 User 对象。对象返回允许使用行为的复杂数据结构。调用者接收一个完全构建的实例。这种模式在面向对象的 PHP 中很常见。

按引用返回

此示例演示了按引用返回值。

return_reference.php
<?php

declare(strict_types=1);

function &getCounter(): int {
    static $counter = 0;
    return $counter;
}

$countRef = &getCounter();
$countRef++;
echo "Counter: " . getCounter(); // Outputs 1

该函数返回对静态变量的引用。修改返回的引用会影响原始变量。引用返回不太常见,但对特定情况很有用。它们需要谨慎使用,以避免意外行为。

最佳实践

来源

PHP return 文档

本教程涵盖了 PHP return 语句,并提供了实际示例,展示了在函数和方法中使用 return 的各种方法。

作者

我叫 Jan Bodnar,是一位充满激情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。迄今为止,我撰写了 1,400 多篇文章和 8 本电子书。我拥有超过十年的编程教学经验。

列出 所有 PHP 教程