Язык программирования PHP - [24]
>
>function DataCheck(){
> $check =true;
> $n = func_num_args();
> // число аргументов,
> // переданных в функцию
>
> $args = func_get_args();
> // массив аргументов функции
> for ($i=0;$i<$n;$i++){
> $v = $args[$i];
> if ($i % 2 == 0){
> if (!is_int($v)) $check = false;
> // проверяем,
> // является ли четный аргумент целым
> }
> }
>return $check;
>}
>if (DataCheck("text", 324))
> echo "Проверка прошла успешно
";
>else echo "Данные не удовлетворяют
> условиям
";
>?>
Как видим, комбинации функций func_num_args(), func_get_arg() и func_get_args() используется для того, чтобы функции могли иметь переменный список аргументов. Эти функции были добавлены только в PHP 4. В PHP3 для того, чтобы добиться подобного эффекта, можно использовать в качестве аргумента функции массив. Например, вот так можно написать скрипт, проверяющий, является ли каждый нечетный параметр функции целым числом:
>
>function DataCheck($params){
> $check =true;
> $n = count($params);
> // число аргументов,
> // переданных в функцию
>
> for ($i=0;$i<$n;$i++){
> $v = $params[$i];
> if ($i % 2 !== 0){
> // проверяем, является ли нечетный
> // аргумент целым
>if (!is_int($v)) $check = false;
> }
> }
>return $check;
>}
>if (DataCheck("text", 324))
> echo "Проверка прошла успешно
";
>else echo "Данные не удовлетворяют условиям
";
>?>
Использование переменных внутри функции
Глобальные переменные
Чтобы использовать внутри функции переменные, заданные вне нее, эти переменные нужно объявить как глобальные. Для этого в теле функции следует перечислить их имена после ключевого слова global:
>global $var1, $var2;
>
>$a=1;
>function Test_g(){
>global $a;
> $a = $a*2;
> echo 'в результате работы функции $a=',$a;
>}
>echo 'вне функции $a=',$a,', ';
>Test_g();
>echo "
";
>echo 'вне функции $a=',$a,', ';
>Test_g();
>?>
В результате работы этого скрипта получим:
>вне функции $a=1, в результате работы
> функции $a=2
>вне функции $a=2, в результате работы
> функции $a=4
Когда переменная объявляется как глобальная, фактически создается ссылка на глобальную переменную. Поэтому такая запись эквивалентна следующей (массив GLOBALS содержит все переменные, глобальные относительно текущей области видимости):
>$var1 = & $GLOBALS["var1"];
>$var2 = & $GLOBALS["var2"];
Это значит, например, что удаление переменной $var1 не удаляет глобальной переменной $_GLOBALS["var1"].
Статические переменные
Чтобы использовать переменные только внутри функции, при этом сохраняя их значения и после выхода из функции, нужно объявить эти переменные как статические. Статические переменные видны только внутри функции и не теряют своего значения, если выполнение программы выходит за пределы функции. Объявление таких переменных производится с помощью ключевого слова static:
>static $var1, $var2;
Статической переменной может быть присвоено любое значение, но не ссылка.
>
>function Test_s(){
>static $a = 1;
>// нельзя присваивать выражение или ссылку
> $a = $a*2;
> echo $a;
>}
>Test_s(); // выведет 2
>echo $a; // ничего не выведет, так как
> // $a доступна только
> // внутри функции
>Test_s(); // внутри функции $a=2, поэтому
> // результатом работы функции
> // будет число 4
>?>
Возвращаемые значения
Все функции, приведенные выше в качестве примеров, выполняли какие-либо действия. Кроме подобных действий, любая функция может возвращать как результат своей работы какое-нибудь значение. Это делается с помощью утверждения return. Возвращаемое значение может быть любого типа, включая списки и объекты. Когда интерпретатор встречает команду return в теле функции, он немедленно прекращает ее исполнение и переходит на ту строку, из которой была вызвана функция.
Например, составим функцию, которая возвращает возраст человека. Если человек не умер, то возраст считается относительно текущего года.
>
>/* если второй параметр вычисляется
>как true, то он рассматривается как
>дата смерти, */
>function Age($birth, $is_dead){
> if ($is_dead) return $is_dead-$birth;
> else return date("Y")-$birth;
>}
>echo Age(1971, false); // выведет 33
>echo Age(1971, 2001); // выведет 30
>?>
В этом примере можно было и не использовать функцию return, а просто заменить ее функцией вывода echo. Однако если мы все же делаем так, что функция возвращает какое-то значение (в данном случае возраст человека), то в программе мы можем присвоить любой переменной значение этой функции:
>$my_age = Age(1981, 2004);
В результате работы функции может быть возвращено только одно значение. Несколько значений можно получить, если возвращать список значений (одномерный массив). Допустим, мы хотим получить полный возраст человека с точностью до дня.
>
>function Full_age($b_day, $b_month, $b_year)
>{
> $y = date("y");
> $m = intval(date("m"));
> $d = intval(date("d"));
> $b_month = intval($b_month);
> $b_day = intval($b_day);
> $b_year = intval($b_year);
> $day = ($b_day > $d ? $d : $d - $b_day);
> $tmpMonth = ($b_day > $d ? -1 : 0);
> $month = ($b_month > $m + $tmpMonth ? $m : $m + $tmpMonth - $b_month);
> $tmpYear = ($b_month > $m + $tmpMonth ? -1 : 0);
![Половая идентификация ребенка в кинетическом рисунке семьи](/storage/book-covers/ac/ac5b2cf435e320c2b679b133d70201eb0101d253.jpg)
Здоровые семейные отношения – это залог успешной полоролевой идентификации ребёнка. Начинаясь с рождения, процесс идентификации протекает непрерывно, с заострениями и актуализациями переживаний на кризисных этапах психосексуального развития. Одним из таких этапов является возраст эдипова комплекса. Конфликты и искажения воспитательного процесса на этом этапе никогда не проходят бесследно и могут с новой силой реанимироваться уже в подростковом возрасте. В пособии представлены основные критерии анализа и подходы к пониманию проблем половой идентификации ребёнка с помощью популярной рисуночной методики.
![Искусство Древней Греции и Рима: учебно-методическое пособие](/storage/book-covers/4c/4c3785b8496557e93de940ff04a8fc6d39db6429.jpg)
Предлагаемое методическое пособие рассчитано на студентов 1 курса всех форм обучения: очной (дневной, вечерней), при которой студенты слушают полный курс лекций по всем заявленным в пособии темам, и заочной, при которой студенты слушают краткий курс лекций и занимаются самостоятельной подготовкой к экзаменам и зачетам. Пособие содержит изложенную в краткой форме программу занятий, подробный тематический план-конспект по тридцати двум темам изучаемым в течение семестра, список рекомендованной к курсу лекций литературы, вопросы к экзаменам, темы рефератов, семинарских занятий, а также приблизительные темы дипломных и курсовых работ.
![Самоучитель Adobe After Effects 6.0](/storage/book-covers/84/8493a01f3f2ad533f801532092a350699300772b.jpg)
Обучение созданию профессиональных видеофильмов и обработки их на компьютере представлено в виде 12 уроков. Рассматривается, как с помощью программы Adobe After Effects можно редактировать и рисовать последовательность кадров, добавлять титры и заголовки, применять различные видеоэффекты, редактировать звуковое сопровождение фильма. Описывается процесс настройки прозрачности и наложения слоев видео для последующего экспорта фильма в различных форматах. Показываются способы создания анимации при масштабировании, поворотах и в движении с наложением титров и спецэффектов.
![История русской литературы XX века (20–90–е годы). Основные имена](/storage/book-covers/d8/d860f2d60662468b2d09f1006035d88ecc81bdcf.jpg)
Книга является пособием по истории русской литературы XX века (20-90-е годы). Она представляет собой первый том, за которым последует продолжение — «Литературный процесс» (в двух частях). Пособие призвано отразить современный научный взгляд на основные художественные ценности и тенденции развития русской литературы XX века.Издание предназначено для студентов филологических факультетов российских университетов, а также для аспирантов и преподавателей, — всех, кто занимается русской литературой.
![Материаловедение](/storage/book-covers/f2/f2866472365118a39b7ad9d23b9460f3f375d581.jpg)
Данный конспект лекций предназначен для студентов высших и средних специальных учебных заведений. В него входят сведения о древесине и древесных материалах, описываются их основные свойства. Дается характеристика металлов и сплавов, рассматриваются способы их применения. Приводятся основные сведения о лакокрасочных, смазочных, облицовочных материалах, а также классификация клеев и области их назначения.
![Микроэкономика](/storage/book-covers/29/2910249380ec5db03afe32a486701a77a59eba31.jpg)
В данном конспекте лекций в доступной форме изложены все основные вопросы по дисциплине «микроэкономика».Книга поможет получить основные знания и подготовиться к зачету или экзамену. Рекомендуется студентам экономических специальностей.