Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Возвращаемые значения



Все функции, приведенные выше в качестве примеров, выполняли какие-либо действия. Кроме подобных действий, любая функция может возвращать как результат своей работы какое-нибудь значение. Это делается с помощью утверждения return. Возвращаемое значение может быть любого типа, включая списки и объекты. Когда интерпретатор встречает команду return в теле функции, он немедленно прекращает ее исполнение и переходит на ту строку, из которой была вызвана функция.

Например, составим функцию, которая возвращает возраст человека. Если человек не умер, то возраст считается относительно текущего года.

<?php/* если второй параметр вычисляется как true, то он рассматривается как дата смерти, */ function Age($birth, $is_dead){ if ($is_dead) return $is_dead-$birth; else return date("Y")-$birth;}echo Age(1971, false); // для 2009 года выведет 38echo Age(1971, 2001); // выведет 30?>

В этом примере можно было и не использовать функцию return, а просто заменить ее функцией вывода echo. Однако если мы все же делаем так, что функция возвращает какое-то значение (в данном случае возраст человека), то в программе мы можем присвоить любой переменной значение этой функции:

$an_age = Age(1981, 2004);

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

<?phpfunction Full_age($b_day, $b_month, $b_year){ $y = date("Y"); $m = intval(date("m")); $d = intval(date("d")); $b_month = intval($b_month); $b_day = intval($b_day); $b_year = intval($b_year); $day = ($b_day > $d? 30 - $b_day + $d: $d - $b_day); $tmpMonth = ($b_day > $d? -1: 0); $month = ($b_month > $m + $tmpMonth? 12 - $b_month + $tmpMonth + $m: $m+$tmpMonth - $b_month); $tmpYear = ($b_month > $m + $tmpMonth? -1: 0); if ($b_year > $y + $tmpYear) { $year = 0; $month = 0; $day = 0; } else { $year = $y + $tmpYear - $b_year; } return array ($day,$month,$year);}$age = Full_age("29","06","1986");echo "Вам $age[2] лет, $age[1] месяцев и $age[0] дней";?>

Когда функция возвращает несколько значений для их обработки в программе, удобно использовать языковую конструкцию list (), которая позволяет одним действием присвоить значения сразу нескольким переменным. Например, в предыдущем примере, оставив без изменения функцию, обработать возвращаемые ей значения можно было так:

<?// задание функции Full_age()list($day,$month,$year) = Full_age("07", "08","1974");echo "Вам $year лет, $month месяцев и $day дней";?>

Вообще конструкцию list () можно использовать для присвоения переменным значений элементов любого массива.

<?$arr = array("first","second");list($a,$b) = $arr; // переменной $a присваивается первое // значение массива, $b – второеecho $a," ",$b; // выведет строку "first second"?>

Пример 5.9. Использование list()





Дата публикования: 2015-01-24; Прочитано: 220 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...