Меню сайта
Категории раздела
HTML [44] |
Visual C++ и MFC [21] |
c++ [78] |
php [19] |
Javascript [15] |
C# [51] |
загрузки [0] |
XNA
[10]
создание игр с помощью xna
|
Наш опрос
Друзья сайта
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Реклама
Главная » Статьи » php |
Урок 4
В PHP существует два типа функций: зарезервированные функции; функции, определяемые пользователем. С первым типом мы уже сталкивались, например, когда упоминали функцию print_r(). Эти функции уже заранее разработаны производителем, и мы можем беспрепятственно ими воспользоваться. Они имеют самое разнообразное применение: это и математические функции, и функции работы со строками, массивами, файлами, временем и так далее. Все эти функции вы можете посмотреть в Мануале PHP, либо с некоторыми наиболее используемыми функциями, переведенными на русский язык, вы можете познакомиться прямо на этом сайте. Больше возможностей, а значит и проблем, предоставляют функции, определяемые пользователем. Эти функции разрабатываются самим программистом в процессе написания кода. Они могут быть самыми разнообразными по сложности и разноплановыми по применению. Особенность этих функций состоит в том, что их необходимо определять, в отличие от зарезервированных функций. Синтаксис определения таких функций в общем виде выглядит так:function имя_функции(аргумент1, аргумент2 и так далее) { некоторый операции, выполняемые при вызове функции ; } Имя функции - оригинальный идентификатор, может содержать все буквы латинского алфавита, числа и знак подчеркивания. Следите, чтобы имя вашей функции не совпадало с зарезервированной функцией PHP, иначе программа выведет ошибку. Заметьте, что имя функции, в отличие от имени переменной, нечувствительно к регистру. Аргументами функций могут являться переменные и/или константы. Это те значения, которые будут использоваться командами в теле функции. Внутри функции может быть любой верный php код, включая функции обоих типов, а также классы, которые мы разберем немного позже. Использование функций, определенных пользователем, полностью идентично использованию зарезервированных функций. Приведу в качестве примера определение простенькой функции:function sum($a, $b) { $c = $a + $b; echo "$a + $b = $c <br>"; return $c; } Конструкция return аргумент заставляет данную функцию возвращать после своего выполнения значение аргумента. Посмотрим пример использования вышеуказанной функции:$a = sum(12, 5); echo $a; /* этот код выведет 12 + 5 = 17 17 */ В этом примере переменной $a присвоилось значение, возвращенное функцией sum (т.е. значение $c). Если бы мы не указали в определении функции return $c, то пример выше вывел бы только 12 + 5 = 17. Нужно учесть, что все переменные внутри функции являются локальными, действующими только в теле функции. Поэтому в примере выше не было ошибкой строчка $a = sum(12, 5), где в функции sum уже есть своя переменная $a. Эти переменные никоем образом не пересекаются и имеют совершенно разное значение. Для того, чтобы переменная, определенная внутри функции, действовала вне ее пределов, необходимо указать, что она является глобальной. Это делается следующим образом:function word ($word) //функция word() и переменная $word - совершенно разные вещи { global $string; //определение $string как глобальной $string = $word." - отличная вещь!"; } word ("PHP"); echo $string; //выведет "PHP - отличная вещь!" Как видите, мы не применяли return, так что функция ничего не возвращает, но мы определили переменную $string как глобальную, поэтому она действует в пределах всего кода php, так что в данном случае $string в функции равна $string вне функции. Еще одна проблема, которая может возникнуть при использовании определяемых функций, - то, что функция после своего выполнения теряет все свои значения и при ее новом вызове нельзя использовать данные, полученные при предыдущем выполнении функции. Но эта проблема решаема, используя определение переменное как статичной.function mult ($a) { static $result=1; //определение $result как статичной $result *= $a; echo $result.'<br>'; } for ($i=2; $i<=4; $i++) { mult($i) ;} /*выведет 2 6 24 */ Если бы мы не написали static, то пример вывел бы числа 2, 3 и 4. Следует заметить, что в некоторых случаях нам нужно передавать в качестве аргумента функции одно и то же значение. В этом случае в определении функции можно указать аргумент функции по умолчанию. Тогда, если при вызове функции аргумент не указан, то будет использоваться это значение по умолчанию.function arr_count ($a, $b=3) /* значение по умолчанию должно указываться справа */ // такая запись: function arr_count ($b=3, $a) - будет работать неверно { global $array; $result = $array[$a] + $array[$b]; return $result; } $array = array(2, 5, 4, 7, 2); echo arr_count(2)." + ".arr_count(1, 4)." = ".(arr_count(2) + arr_count(1, 4)); // выведет 11 + 7 = 18 Функцию можно сделать значением переменной. Например, продолжаем пример выше:$CountArray='arr_count'; echo $CountArray(0); //выведет число 9 На этом все. До следующего урока. | |
Просмотров: 953 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |