52568.fb2
}
Test_s(); // выведет 2
echo $a; // ничего не выведет, так как
// $a доступна только
// внутри функции
Test_s(); // внутри функции $a=2, поэтому
// результатом работы функции
// будет число 4
?>
Возвращаемые значения
Все функции, приведенные выше в качестве примеров, выполняли какие-либо действия. Кроме подобных действий, любая функция может возвращать как результат своей работы какое-нибудь значение. Это делается с помощью утверждения 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); // выведет 33
echo Age(1971, 2001); // выведет 30
?>
В этом примере можно было и не использовать функцию return, а просто заменить ее функцией вывода echo. Однако если мы все же делаем так, что функция возвращает какое-то значение (в данном случае возраст человека), то в программе мы можем присвоить любой переменной значение этой функции:
$my_age = Age(1981, 2004);
В результате работы функции может быть возвращено только одно значение. Несколько значений можно получить, если возвращать список значений (одномерный массив). Допустим, мы хотим получить полный возраст человека с точностью до дня.
<?php
function 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 ? $d : $d - $b_day);
$tmpMonth = ($b_day > $d ? -1 : 0);
$month = ($b_month > $m + $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");