52568.fb2 Курс "Язык программирования PHP" - читать онлайн бесплатно полную версию книги . Страница 32

Курс "Язык программирования PHP" - читать онлайн бесплатно полную версию книги . Страница 32

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;