Чтение онлайн

на главную - закладки

Жанры

Курс "Язык программирования PHP"

Савельева Нина Владимировна

Шрифт:

// проверяем,

// является ли четный аргумент целым

}

}

return $check;

}

if (DataCheck("text", 324))

echo "Проверка прошла успешно<br>";

else echo "Данные не удовлетворяют

условиям<br>";

?>

Как видим, комбинации функций 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 "Проверка прошла успешно<br>";

else echo "Данные не удовлетворяют условиям<br>";

?>

Использование переменных внутри функции

Глобальные переменные

Чтобы использовать внутри функции переменные, заданные вне нее, эти переменные нужно объявить как глобальные. Для этого в теле функции следует перечислить их имена после ключевого слова global:

global $var1, $var2;

<?

$a=1;

function Test_g{

global $a;

$a = $a*2;

echo 'в результате работы функции $a=',$a;

}

echo 'вне функции $a=',$a,', ';

Test_g;

echo "<br>";

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 в теле функции, он немедленно прекращает ее исполнение и переходит на ту строку, из которой была вызвана функция.

Например, составим функцию, которая возвращает возраст человека. Если человек не умер, то возраст считается относительно текущего года.

<?php

/* если второй параметр вычисляется

как 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);

Поделиться:
Популярные книги

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

Черный Маг Императора 8

Герда Александр
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 8

Измена. Отбор для предателя

Лаврова Алиса
1. Отбор для предателя
Фантастика:
фэнтези
5.00
рейтинг книги
Измена. Отбор для предателя

Кодекс Крови. Книга II

Борзых М.
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга II

Шаг в бездну

Муравьёв Константин Николаевич
3. Перешагнуть пропасть
Фантастика:
фэнтези
космическая фантастика
7.89
рейтинг книги
Шаг в бездну

Часовая битва

Щерба Наталья Васильевна
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Часовая битва

Вечная Война. Книга II

Винокуров Юрий
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Вечная Война. Книга II

Хроники странного королевства. Вторжение. (Дилогия)

Панкеева Оксана Петровна
110. В одном томе
Фантастика:
фэнтези
9.38
рейтинг книги
Хроники странного королевства. Вторжение. (Дилогия)

Часовой ключ

Щерба Наталья Васильевна
1. Часодеи
Фантастика:
фэнтези
9.36
рейтинг книги
Часовой ключ

Инвестиго, из медика в маги

Рэд Илья
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Инвестиго, из медика в маги

Кротовский, может, хватит?

Парсиев Дмитрий
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Кротовский, может, хватит?

Драконий подарок

Суббота Светлана
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Драконий подарок

Очешуеть! Я - жена дракона?!

Амеличева Елена
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Очешуеть! Я - жена дракона?!

Идеальный мир для Лекаря 9

Сапфир Олег
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря 9