Окружение

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

<?php

$age = 5;

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

$result = generate(10);

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

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

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

<?php

$age = 5;

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

$result = generate(10);

В данном случае результатом будет число 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.

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