Язык программирования 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);


Рекомендуем почитать
Сочинения гр. А. К. Толстого как педагогический материал. Часть 2. Эпические мотивы

«Лирика обладает одним несомненным преимуществом перед другими родами поэзии: она лучше всего освещает нам личный мир поэта, ту сферу, которую выделяет для него в широком Божьем мире его темперамент, обстановка, симпатии, верования; она показывает степень отзывчивости поэта; т.е. его способности переживать разнородные душевные состояния: она часто открывает нам уголки поэтической деятельности, где живут не оформившиеся еще образы, задатки для определенных фигур эпоса и драмы. В эпосе и драме образы становятся разнообразнее и пестрее, но вместе с тем славятся объективнее, особенно в драме…».


Уголовное право. Особенная часть

В книге кратко изложены ответы на основные вопросы темы «Уголовное право. Особенная часть». Издание поможет систематизировать знания, полученные на лекциях и семинарах, подготовиться к сдаче экзамена или зачета.Пособие адресовано студентам высших и средних образовательных учреждений, а также всем интересующимся данной тематикой.


Самоучитель Adobe After Effects 6.0

Обучение созданию профессиональных видеофильмов и обработки их на компьютере представлено в виде 12 уроков. Рассматривается, как с помощью программы Adobe After Effects можно редактировать и рисовать последовательность кадров, добавлять титры и заголовки, применять различные видеоэффекты, редактировать звуковое сопровождение фильма. Описывается процесс настройки прозрачности и наложения слоев видео для последующего экспорта фильма в различных форматах. Показываются способы создания анимации при масштабировании, поворотах и в движении с наложением титров и спецэффектов.


Финансовое право

В учебном пособии в краткой и доступной форме рассмотрены все основные вопросы, предусмотренные государственным образовательным стандартом и учебной программой по дисциплине «Финансовое право».Книга позволит быстро получить основные знания по предмету, а также качественно подготовиться к зачету и экзамену.Рекомендуется студентам, аспирантам и преподавателям по юридическим, экономическим и управленческим специальностям, а также сотрудникам банков.Автор книги, Шевчук Денис Александрович, имеет опыт преподавания различных дисциплин в ведущих ВУЗах Москвы (экономические, юридические, технические, гуманитарные), два высших образования (экономическое и юридическое), более 30 публикаций (статьи и книги), Член Союза Юристов Москвы, Член Союза Журналистов России, Член Союза Журналистов Москвы, Стипендиат Правительства РФ, опыт работы в банках, коммерческих и государственных структурах (в т.ч.


Следственные действия: психология, тактика, технология

Книга посвящена правовым, психологическим и криминалистическим основам следственных действий как процессуальных способов доказывания по уголовным делам. Рассмотрены общая характеристика следственного действия, психологические условия и приёмы повышения их эффективности, даны рекомендации по подготовке и проведению отдельных видов основных следственных действий, регламентируемых ныне действующим УПК РФ.Для работников правоохранительных органов, студентов, аспирантов, докторантов, профессорско-преподавательского состава юридических учебных заведений.


фгос  ответы

Содержащиеся в пособии контрольно-измерительные материалы (КИМы) для 5 класса, аналогичные материалам ЕГЭ, составлены в соответствии с программой общеобразовательных учреждений по русскому языку и учитывают возрастные особенности учащихся. В конце пособия даны ответы на все варианты тестов, предложены диктанты различных типов.Пособие адресовано учителям, ученикам, их родителям и всем, кому необходимо закрепить и систематизировать знания перед ЕГЭ.