PHP 4 на практике



Возврат значений из функции - часть 2


  • Если условие команды i f оказывается ложным, работа функции еще не завершена. В этом случае общая сумма не превышает предельного размера кредита, поэтому функция должна вернуть логическую истину.

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

    Если при вызове check_limit( ) было получено значение TRUE, мы предлагаем пользователю продолжить закупку. В противном случае пользователь информируется о превышении кредита.

    Листинг 4.3.

    Сравнение текущей суммы счета пользователя с предельным размером кредита

    $cost = 1456.22;

    $limit = 1000.00;

    function check_limit($total_cost. $credit_limit)

    if ($total_cost > $credit_limit) :

    return 0;

    endif;

    return 1;

    }

    if (check_limit($cost. $limit)) :

    // Продолжить закупки

    print "Keep shopping!";

    else :

    print "Please lower your total bill to less than $".$limit."!";

    endif;

    При выполнении листинга 4.3 будет выведено сообщение об ошибке, поскольку значение $cost превышает $limit.

    Функция также может возвращать сразу несколько значений при помощи списка. Продолжая кулинарную тему, давайте напишем функцию, которая бы возвращала три лучших года для указанного сорта вина. Функция приведена в листинге 4.4, но сначала прочитайте алгоритм на псевдокоде:

    • Объявить функцию best_years( ), вызываемую с одним параметром. Параметр $label определяет сорт вина, для которого пользователь хотел бы узнать три рекомендуемых года.

    • Объявить два массива, $merlot и $zinfandel. В каждом массиве хранится три рекомендуемых года для соответствующего сорта вина.

    • Написать команду return, которая бы использовала особые возможности переменных. Выражение $$label сначала интерпретирует переменную $label, а затем интерпретирует полученное значение как имя другой переменной. В настоящем примере массив merlot возвращается в виде списка, и каждый возвращаемый год занимает свою позицию в списке, для которого вызывалась функция.




      Содержание  Назад  Вперед