Оператор return: все способы возврата значений в PHP

Раздел: Основы PHP -> Основы PHP

Оператор return в PHP

Оператор return завершает выполнение текущей функции (или скрипта) и возвращает переданное значение вызывающему коду. Если значение не указано, возвращается null. Это основной механизм передачи данных из функции во внешнюю среду.


<?php
function sum($a, $b) {
    return $a + $b;
}
echo sum(3, 4); // 7
?>
  

Htm php (html и php)

После return выполнение функции немедленно прекращается, все последующие операторы игнорируются.

Типичная ошибка:

Забыть написать return. В этом случае функция возвращает null без явного указания.


<?php
function badSum($a, $b) {
    $result = $a + $b;
    // return отсутствует
}
var_dump(badSum(3,4)); // NULL
?>
    

язык разработки php (php (язык разработки))

Решение:

Всегда явно указывать return для всех путей выполнения функции.

Как вернуть несколько значений из функции?

Прямая передача нескольких значений невозможна, поэтому используется массив, объект или генератор.


<?php
function getStats($arr) {
    return [
        'min' => min($arr),
        'max' => max($arr),
        'avg' => array_sum($arr) / count($arr)
    ];
}
$data = getStats([2,5,3,8]);
list($min, $max) = [getStats([2,5,3,8])['min'], getStats([2,5,3,8])['max']];
// Или использовать деструктуризацию (PHP 7.1+):
['min' => $min, 'max' => $max, 'avg' => $avg] = getStats([2,5,3,8]);
?>
  

Custom index php (создание собственного index.php)

Проблемы:

Неверный порядок индексов при использовании числового массива может привести к путанице. Рекомендуется применять ассоциативные ключи или возвращать объект.

Как выйти из функции досрочно?

Ранний возврат (early return) позволяет прервать выполнение при выполнении определённого условия, уменьшая вложенность кода.


<?php
function validateEmail($email) {
    if (empty($email)) {
        return false;
    }
    // проверка формата
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        return false;
    }
    return true;
}
?>
  

Https page php (страница php через https)

Типичная ошибка:

После условия забыть указать return для остальных веток, что приводит к продолжению выполнения.

Решение:

Всегда явно возвращать значение в каждом логическом пути.

Можно ли вернуть ничего (void)?

Оператор return без выражения возвращает null. Такую конструкцию используют для прерывания работы функции без возврата данных.


<?php
function processItem(&$item) {
    if ($item === null) {
        return; // возвращает null
    }
    $item = strtoupper($item);
}
$value = null;
processItem($value);
var_dump($value); // NULL
?>
  

простой php (простые примеры php)

Проблемы:

Путаница между возвратом null и отсутствием значения. Явное указание return null делает намерение более ясным.

Как вернуть переменную по ссылке?

Функция может вернуть ссылку на внешнюю переменную, если определить её с & и в теле использовать return &$var.


<?php
$external = 100;
function &getRef() {
    global $external;
    return $external;
}
$ref = &getRef();
$ref = 200;
echo $external; // 200
?>
  

Return php (оператор return в php)

Ошибки:

Нельзя возвращать ссылку на локальную переменную, так как она будет уничтожена после выхода из функции. Это приводит к предупреждению.

Решение:

Возвращать ссылки только на глобальные, статические или переданные по ссылке переменные.

Что возвращает оператор return в подключаемом файле?

Файл, подключаемый через include или require, может содержать return. Тогда результатом вызова include будет возвращённое значение.


<!-- config.php -->
<?php
return [
    'host' => 'localhost',
    'user' => 'root'
];
?>

<?php
$config = include 'config.php';
var_dump($config); // array(2) { ["host"]=> string(9) "localhost" ... }
?>
  

Php return file (возврат файла из функции в php)

Типичная ошибка:

Если файл не заканчивается оператором return, include возвращает 1. Это может быть неочевидно.

Как использовать return в генераторах?

Генератор может содержать return, который задаёт окончательное значение, доступное через метод getReturn().


<?php
function gen() {
    yield 1;
    yield 2;
    return 3;
}
$generator = gen();
foreach ($generator as $value) {
    echo $value; // 1 2
}
echo $generator->getReturn(); // 3
?>
  

Проблемы:

Не путать yield с return. return в генераторе не прерывает итерацию, а задаёт финальное значение.

- Php добавить переменную (добавление переменной php)
- 0 false php (0 и false в php)
- Php null false (null и false в php)

Расширенные примеры использования return

Пример

<?php
// 1. Возврат замыкания (closure)
function multiplier($factor) {
    return function($value) use ($factor) {
        return $value * $factor;
    };
}
$double = multiplier(2);
echo $double(5); // 10
?>
10
Пример

<?php
// 2. Возврат объекта
class User {
    public $name;
}
function createUser($name) {
    $user = new User();
    $user->name = $name;
    return $user;
}
$u = createUser('Alice');
echo $u->name; // Alice
?>
Alice
Пример

<?php
// 3. Рекурсивный return
function factorial($n) {
    if ($n <= 1) {
        return 1;
    }
    return $n * factorial($n - 1);
}
echo factorial(5); // 120
?>
120
Пример

<?php
// 4. Return в блоке try/finally
function testFinally() {
    try {
        return 'из try';
    } finally {
        echo 'finally выполнен';
    }
}
echo testFinally(); // finally выполнен из try
?>
finally выполнен из try
Пример

<?php
// 5. Return в eval()
$code = 'return 42;';
$result = eval($code);
echo $result; // 42
?>
42
Пример

<?php
// 6. Return с null coalescing оператором
function getConfig($key) {
    $config = [
        'host' => 'localhost',
        'port' => 3306
    ];
    return $config[$key] ?? 'default';
}
echo getConfig('user'); // default
echo getConfig('host'); // localhost
?>
defaultlocalhost
Пример

<?php
// 7. Return и nullsafe оператор (PHP 8)
class Address {
    public ?string $city;
}
class Person {
    public ?Address $address;
}
function getCity(?Person $person): ?string {
    return $person?->address?->city;
}
$p = new Person();
$p->address = new Address();
$p->address->city = 'Moscow';
echo getCity($p); // Moscow
echo getCity(null); // (ничего, null)
?>
Moscow
Пример

<?php
// 8. Return в стрелочных функциях (PHP 7.4+)
$add = fn($a, $b) => $a + $b;
echo $add(2,3); // 5
?>
5
Пример

<?php
// 9. Return в статических методах
class MathHelper {
    public static function square($x) {
        return $x * $x;
    }
}
echo MathHelper::square(4); // 16
?>
16
Пример

<?php
// 10. Return с match выражением (PHP 8)
function describeNumber($n) {
    return match(true) {
        $n > 0 => 'положительное',
        $n < 0 => 'отрицательное',
        default => 'ноль'
    };
}
echo describeNumber(-5); // отрицательное
echo describeNumber(0);  // ноль
?>
отрицательноеноль

Оператор return в PHP - comments

En
Return php (php)