Окружение

Какое значение окажется внутри переменной $result после выполнения кода?

<?php

$age = 5;

function generate()
{
    return $age + 3;
}

$result = generate();

Правильный ответ: код упадет с ошибкой. Потому что внутри функции нет переменной с именем $age, но функция пытается её использовать.

Функция — изолированный черный ящик. Всё, что определено снаружи функции, никак не связано с тем, что определено внутри. В теле функции находится программа, изолированная от внешней среды (внешнего окружения).


Рассмотрим другой пример:

<?php

$age = 5;

function generate()
{
    $age = 10;
    return $age + 3;
}

$result = generate();

В данном случае результатом будет число 13. Внешнее значение $age = 5 никак не влияет на код функции.

И последний пример:

<?php

$age = 5;

function generate()
{
    $age = 8;
}

generate();

$result = $age;

Ответ: 5.

Переменная, созданная внутри функции generate никак не влияет на внешнюю переменную $age, поэтому после вызова функции значение внешней $age не изменилось и осталось 5.

Задание

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

Напишите функцию getAgeDifference, которая принимает два года рождения и возвращает строку с разницей в возрасте в виде The age difference is 11.


Советы
  • Напомним, что в PHP есть функция abs, которая возвращает модуль переданного числа: например, abs(-12) вернёт 12.

Упражнение доступно только авторизованным пользователям.

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