До этого мы рассматривали функции как исполнителей, которые что-то делают: выводят текст, изменяют переменные. Но их истинная сила раскрывается, когда они не только выполняют работу, но и возвращают результат. В этом уроке мы погрузимся в мир оператора `return`. Вы узнаете, как "попросить" функцию отдать вам итог своей работы — будь то число, строка, массив или просто логическое `true`/`false`. Мы разберемся, почему `return` — это не то же самое, что `echo`, и почему код после `return` перестает выполняться. Также мы научимся делать наш код надежнее, объявляя, какой именно тип данных должна вернуть функция. Эти знания — ключ к созданию сложных и взаимодействующих друг с другом программ.
- Модуль 1: Основы синтаксиса PHP
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Модуль 4: Условные конструкции
- Модуль 5: Циклы
- Модуль 6: Массивы
- Индексированные массивы.
- Ассоциативные массивы.
- Многомерные массивы.
- Добавление элементов в массив.
- Удаление элементов из массива.
- Функция count().
- Функция array_push() и array_pop().
- Функция array_shift() и array_unshift().
- Функция array_merge().
- Функция array_slice().
- Функция array_splice().
- Функция in_array().
- Функция array_search().
- Функция array_keys() и array_values().
- Функция array_unique().
- Функция array_reverse().
- Сортировка: sort(), rsort().
- Сортировка: asort(), arsort().
- Сортировка: ksort(), krsort().
- Функция array_map().
- Функция array_filter().
- Функция array_reduce().
- Функция array_walk().
- Функция array_column().
- Деструктуризация массивов.
- Iterator интерфейс
- Модуль 7: Функции
- Объявление функций.
- Вызов функций.
- Параметры функций.
- Возврат значений return.
- Значения параметров по умолчанию.
- Передача по значению.
- Передача по ссылке.
- Переменное количество аргументов.
- Оператор распаковки ....
- Типизация параметров.
- Типизация возвращаемых значений.
- Nullable типы.
- Union типы (PHP 8).
- Именованные аргументы (PHP 8).
- Анонимные функции.
- Стрелочные функции.
- Замыкания и use.
- Рекурсивные функции.
- Глобальные переменные в функциях.
- Статические переменные в функциях.
- IteratorAggregate интерфейс
- Модуль 8: Работа со строками
- Одинарные и двойные кавычки.
- Экранирование символов.
- Heredoc и Nowdoc синтаксис.
- Функция strlen().
- Функция substr().
- Функция str_replace().
- Функция strpos() и strrpos().
- Функция explode() и implode().
- Функция trim(), ltrim(), rtrim().
- Функция strtolower() и strtoupper().
- Функция ucfirst() и ucwords().
- Функция str_repeat().
- Функция htmlspecialchars().
- Модуль 9: Суперглобальные переменные
- Модуль 10: Работа с формами
- Модуль 11: Работа с файлами
- Модуль 12: Дата и время
- Модуль 13: Регулярные выражения
- Модуль 14: Сессии и Cookie
- Модуль 15: Include и Require
- Модуль 16: Объектно-ориентированное программирование
- Модуль 17: Пространства имен
- Модуль 18: Обработка ошибок и исключений
- Модуль 19: Работа с JSON и XML
- Модуль 21: PDO - PHP Data Objects
- Модуль 22: Composer и зависимости
- Модуль 23: cURL и HTTP запросы
- Модуль 24: REST API
- Модуль 25: Безопасность
- Модуль 28: Работа с изображениями
- Модуль 29: Отправка email
- Модуль 30: Паттерны проектирования
- Модуль 31: Тестирование
- Модуль 32: Продвинутые возможности PHP 8+
1. Простейший возврат значения
Завершите функцию `square`, которая должна вычислять квадрат числа. Вместо того чтобы выводить результат на экран, она должна "вернуть" его, чтобы его можно было использовать дальше в коде.
<?php
function square($number) {
$result = $number * $number;
input1S input2S;
}
$myNumber = 5;
$squaredNumber = square($myNumber);
echo "Квадрат числа $myNumber равен " . $squaredNumber;
?>2. Использование возвращенного значения
Функция `getWelcomeMessage` создает и возвращает приветственное сообщение. Однако при попытке вывести это сообщение на экран, код пытается обратиться к переменной, которая существует только внутри функции, что вызывает ошибку. Исправьте строку с `echo`.
<?phpfunction getWelcomeMessage() { $message = "Добро пожаловать!"; return $message;} $welcomeMsg = getWelcomeMessage();echo $message;?>3. Что произойдет после return?
Оператор `return` не только возвращает значение, но и немедленно прекращает выполнение функции. Проанализируйте код и выберите, что именно будет выведено на экран.
<?php
function getStatus() {
return "Complete";
echo "Processing..."; // Этот код недостижим
}
echo getStatus();
?>4. Что вернет функция без return?
Если в функции нет явного оператора `return`, что она вернет по умолчанию? Посмотрите на код, который использует `var_dump` для анализа результата вызова такой функции, и впишите в поле ответа то, что выведет `var_dump`.
<?php
function logAction($action) {
// Эта функция только выводит лог, но ничего не возвращает
echo "Action logged: $action";
}
$result = logAction("User login");
var_dump($result);
?>5. Соберите функцию с условием
Соберите из фрагментов функцию `checkNumber`, которая проверяет число. Если число положительное, она должна вернуть строку "Positive", в противном случае — "Negative or Zero".
return "Positive";if ($num > 0) {}function checkNumber($num) {return "Negative or Zero";}echo "Positive";6. Объявление типа возвращаемого значения
Чтобы сделать код более надежным, можно указать, какой тип данных должна возвращать функция. Дополните объявление функции `calculateTotal`, чтобы она гарантированно возвращала число с плавающей точкой (`float`).
<?php
declare(strict_types=1);
function calculateTotal(float $price, int $quantity) input1S {
return $price * $quantity;
}
$total = calculateTotal(9.99, 3);
echo "Итого: " . $total;
?>7. Несоответствие типа возврата
Функция `getAge` объявлена с типом возврата `int`, что означает, что она должна вернуть целое число. Однако сейчас она возвращает строку, что вызовет ошибку `TypeError`. Исправьте возвращаемое значение, чтобы оно соответствовало объявленному типу.
<?phpdeclare(strict_types=1); function getAge(): int { return "25";} echo getAge();?>8. Возврат нескольких значений через массив
Чтобы вернуть из функции несколько значений, их обычно упаковывают в массив. Завершите функцию `getCoordinates`, чтобы она возвращала массив с двумя элементами: широтой (`lat`) и долготой (`lng`). Используйте токены из банка.
<?php
function getCoordinates(): array {
$lat = 55.7558;
$lng = 37.6173;
return [input1S, input2S];
}
$coords = getCoordinates();
print_r($coords);
?>9. Возврат void
Тип возврата `: void` означает, что функция не должна возвращать никакого значения. Что выведет `var_dump`, если попытаться получить результат вызова такой функции? Обратите внимание, что сама функция при этом тоже что-то выводит.
<?php
function displayStatus(string $status): void {
echo "Status: $status";
}
$result = displayStatus("OK");
var_dump($result);
?>