
- •Лабораторная работа №4
- •4.4. Теоретические сведения
- •Общие сведения о языке php
- •Работа в редакторе Zend Studio
- •4.4.3. Переменные и типы данных php
- •4.4.3.1.Переменные
- •4.4.3.2.Глобальные переменные
- •4.4.3.3.Статические переменные
- •4.4.3.4.Константы
- •4.4.3.5.Типы данных
- •4.4.3.6.Преобразование типов
- •4.4.4.Массивы
- •4.4.5. Операторы
- •4.4.5.1. Математические операторы
- •4.4.5.2. Операторы присваивания
- •4.4.5.3. Строковые операторы
- •4.4.5.4. Операторы инкремента и декремента
- •4.4.5.5. Логические операторы
- •4.4.5.6. Операторы равенства
- •4.4.5.7. Операторы сравнения
- •4.4.6. Конструкции языка
- •4.4.6.1. Проверка условий
- •4.4.6.2. Цикл с предусловием While
- •4.4.6.3. Цикл с постусловием do-while
- •4.4.6.4. Цикл For
- •4.4.6.5. Инструкции break и continue
- •4.4.6.7. Конструкция switch-case
- •4.4.7. Функции
- •4.4.7.1. Определение и вызов функций
- •4.4.7.2. Возврат значения из функции
- •4.4.7.3. Рекурсивные функции
- •4.4.7.4. Функции-переменные
- •4.4.8. Файловый ввод/вывод и файловая система
- •4.4.8.1. Проверка существования и размера файла
- •4.4.8.2. Открытие и закрытие файлов
- •4.4.8.3.Запись в файл
- •4.4.8.4. Чтение из файла
- •4.5. Пример разработки программы на php
- •4.6. Указания по организации самостоятельной работы студентов
- •4.7. Контрольные вопросы
4.4.7.2. Возврат значения из функции
По завершении работы функции часто бывает полезно вернуть некоторое значение, для чего результат функции обычно присваивается некоторой переменной. Функции могут возвращать значения любых типов, в том числе массивы и списки. Ниже приведён пример, где функция nalog() вычисляет налог с заданной суммы и возвращает общую сумму вместе с налогом:
<?
$price=100;
$tax= .06;
function nalog($tax, $price) {
$sales_tax=$tax;
return $price+($price*$sales_tax); }
$total_cost=nalog($tax, $price);
$total_cost=round($total_cost,2); // округление до двух десятичных цифр
echo 'Total cost is $'.$total_cost;
?>
Рис. 19. Результат работы программы с вызовом функции
Существует и другой способ использования возвращаемых функций, при котором вызов функции включается прямо в условную/циклическую команду. В следующей программу сумма счета пользователя сравнивается с предельным размером кредита:
$cost=1456.22;
$limit=1000.00;
function check_limit($total_cost, $credit_limit) {
if ($total_cost>$credit_limit) { return 0 ;}
else { return 1; } }
if (check_limit($cost, $limit))
{ echo "Keep shopping!"; } else {
echo "Please lower total bill to less then \$$limit!" ;}
Функция также может возвращать сразу несколько значений при помощи списка. Ниже приведена функция, котороя возвращает три лучших года для указанного сорта вина:
$label="merlot"; //сорт вина function best_years($label) { $merlot=array('1987','1983','1977'); $zinfandel=array('1992','1990','1989'); return $label; } // функция list() используется для получения возвращаемых значений. list(yr1, yr2, yr3)=best_years($label); echo "$label hes three perticularly remarkable years: $yr1, $yr3, $yr2";
Программа выводит следующий результат: merlot has three particulary remarkable years: 1987, 1983, 1977
4.4.7.3. Рекурсивные функции
Ситуация, при которой функция многократно вызывает сама себя, пока не будет выполнено некоторое условие, открывает замечательные возможности. При правильном использовании рекурсивные функции уменишают объём программы и делают её более выразительной. Рекурсивные функции особенно часто используются при выполнении повторяющихся действий - например, при поиске в файлах/массивах и построении графических изображений. Класическим примером рекурсивных функций, встречающимся во многих курсах програмирования, является суммирование чисел от 1 до N. Программа приведённая ниже, суммирует все числа от 1 до 10:
function summation($count) {
if ($count!=0) {
return $count+summation($count-1); } }
$sum=summation(10);
echo "Summation=$sum";
Если функция вызывается достаточно часто, рекурсия делает программу более эффективной. Тем не менее, при использовании рекурсии необходима осторожность, поскольку ошибки могут привести к зацикливанию программы.