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