Язык программирования PHP | страница 46



> $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: