Return php что это
Инструкция return в PHP
Пусть у нас есть функция, которая выводит на экран квадрат переданного числа:
Пусть мы хотим не выводить значение на экран, а записать в какую-нибудь переменную, вот так:
Итак, давайте перепишем нашу функцию так, чтобы она не выводила результат на экран, а возвращала его в переменную:
После того, как данные записаны в переменную, их можно, например, вывести на экран:
А можно сначала как-то изменить эти данные, а затем вывести их на экран:
Можно сразу выполнять какие-то действия с результатом работы функции перед записью в переменную:
А можно не записывать результат в переменную, а сразу вывести его на экран:
Использование функций в выражении
Функции в функциях
Функции, конечно же, не обязательно должны быть одинаковыми.
Пусть, например, у нас есть функция, возвращающая квадрат числа, и функция, возвращающая куб числа:
Давайте с помощью этих функций возведем число 2 в квадрат, а затем результат этой операции возведем в куб:
Пусть теперь у нас есть функция, возвращающая квадрат числа, и функция, находящая сумму двух чисел:
Найдем с помощью этих функций сумму квадрата числа 2 и сумму квадрата числа 3 :
С помощью этих функций найдите квадратный корень из числа 2 и округлите его до трех знаков в дробной части.
Пусть у вас есть функция, возвращающая квадратный корень из числа, и функция, возвращающая сумму трех чисел:
Пусть у вас есть функция, округляющая дробь до трех знаков в дробной части:
Тонкое место return
В следующем примере в зависимости от значения параметра выполнится либо первый, либо второй return :
Что выведется на экран в результате выполнения следующего кода:
Что выведет каждый из echo в результате выполнения следующего кода:
Что выведет каждый из echo в результате выполнения следующего кода:
Цикл и return
Пусть у нас есть функция, возвращающая сумму чисел от 1 до 5 :
Пусть теперь мы расположим return внутри цикла, вот так:
Что выведется на экран в результате выполнения следующего кода:
Что хотел сделать автор данного кода? Исправьте ошибку автора.
Применение return в цикле
То, что return расположен внутри цикла, не всегда может быть ошибкой.
В следующем примере сделана функция, которая определяет, сколько первых элементов массива нужно сложить, чтобы сумма стала больше или равна 10 :
Приемы работы с return
Рассмотрим, к примеру, следующий код:
Дана следующая функция:
Перепишите ее в сокращенной форме согласно изученной теории.
Возврат значений
Использование выражения return
Пример #1 Использование конструкции return
Функция не может возвращать несколько значений, но аналогичного результата можно добиться, возвращая массив.
Пример #2 Возврат нескольких значений в виде массива
Для того, чтобы функция возвращала результат по ссылке, вам необходимо использовать оператор & и при описании функции, и при присвоении переменной возвращаемого значения:
Пример #3 Возврат результата по ссылке
Для получения более детальной информации о ссылках обратитесь к разделу документации Подробно о ссылках.
Объявление типов возвращаемых значений
В PHP 7 добавлена возможность объявлять тип возвращаемого значения. Аналогично объявлению типов аргументов можно задать тип значения, которое будет возвращаться функцией. Типы, которые можно объявить для возвращаемых значений те же, что и для аргументов фукнций.
Режим строгой типизации также работает для объявлении типа возвращаемого значения. В обычном режиме слабой типизации возвращаемое из функции значение приводится к корректному типу. При строгой типизации возвращаемое значение должно быть заданного типа, иначе будет выброшено исключение TypeError.
Если переопределяется родительский метод, возвращаемое значение дочернего метода должно быть того же типа, что и родительского. Если в родительском методе не задан тип возвращаемого значения, то и дочерний метод этот тип может не объявлять.
Примеры
Пример #4 Обычное объявление типа возвращаемого значения
Результат выполнения данного примера:
Пример #5 То же в режиме строгой типизации
declare( strict_types = 1 );
Результат выполнения данного примера:
Пример #6 Возврат объектов
function getC (): C <
return new C ;
>