Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Веб программирование.Начало пути.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
7.81 Mб
Скачать

Область действия и время жизни переменных

Переменные, объявленные вне функций имеют глобальную область действия. Любая переменная, определенная внутри функции, ограничена локальной областью функции и уничтожается при выходе из функции. Например, такая конструкция работать не будет, т.к. переменная находится в глобальной области, а ссылка на неё находится в теле функции.

$perem = 1; /* глобальная область */

function Test ()

{

echo $perem;

}

Test ();

А такая конструкция выдаст правильный результат:

function Test ()

{

$perem = 1; /* локальная область функции */

echo $perem;

}

Test ();

Чтобы глобальная переменная была доступна внутри функции, её необходимо внутри этой функции задекларировать как глобальную переменную.

<?php //pr18.php

/* глобальная область */

$a = 2;

$b = 3;

function Sum ()

{

global $a, $b; /* декларируем переменные $a и $b как глобальные */

$c = $a + $b; /* и теперь функция имеет к ним доступ */

echo $c;//5

global $myglobal;

$myglobal=0;

}

echo ($myglobal) ;//неопределенная переменная $myglobal

Sum ();

echo $myglobal; //0

?>

Для доступа к переменным глобальной области _GET[], $_POST[], $_REQUEST[], $_COOKIE[], _FILES[], $_SERVER[], $_ENV[], $_SESSION[], которые называются суперглобальными и доступны постоянно во время выполнения сценария, в PHP используется специальный массив $GLOBALS.

Время жизни локальной переменной – это время работы функции, в которой объявлена переменная. Для удлинения времени жизни локальной переменной используется ее объявление статической переменной. Статическая переменная существует только в локальной области функции, но не теряет своего значения после выхода из функции. Например:

Function Count ()

{

static $counter = 0; /* декларируем переменную $counter как статическую, при обращении к функции она не будет каждый раз обнуляться */

echo $counter;

$counter++; }

Count(); //количество обращений к функции

Изменяемые (динамические) переменные

Иногда бывает удобно давать переменным изменяемые имена. Такие имена могут изменяться динамически. Например:

$a = "hi";

Изменяемая переменная берет некое значение и обрабатывает его как имя переменной. В приведенном выше примере значение hi может быть использовано как имя переменной, посредством применения двух записанных подряд знаков доллара, т.е.:

$$a="PHP"; /* фактически получается что $hi="PHP" */

print "$a ${$a}"; /* получаем на выходе: hi PHP */

print "$a $hi"; /* или так, что одно и то-же */

Внешние библиотечные функции

В этом разделе описываются некоторые из наиболее часто используемых функций для работы с массивами. Более обширный список доступен на Web-сайте PHP.net.

Функции для работы с массивами

Функция count(), sizeof() – используется для подсчета числа элементов в массиве; sort() – сортировка элементов массива; shuffle() – для случайного перемешивания элементов; array_slice($array_name,offset, length) – используется для извлечения части существующего массива. $array_name является именем разрезаемого массива, offset указывает позицию, где будет начинаться разрез, length указывает число элементов, которое будет вырезано. array_merge($arname1, $arname2) – используется для объединения или слияния двух или более массивов. Пример:

<?php //pr48

$massiv = array( 'В пятницу вечером после работы

мама свои начинает заботы',

'папа залег на диван, как медведь',

'многое должен ребенок суметь',

'много проблем сам решить, все успеть');

foreach($massiv as $value) echo $value;//Вывод

sort($massiv);//Сортировка

foreach($massiv as $key=>$value)

echo ("<li>$key=>$value</li>");//

rsort($massiv);// Сортировка в обратном порядке

for($i=0;$i<count($massiv);$i++){

echo("<br>$massiv[$i]");

}

shuffle($massiv);// Перемешивание

for($i=0;$i<count($massiv);$i++){

echo("<br>$i-$massiv[$i]");

}

$massiv1=array_slice($massiv,2,3); //вырезать три члена, начиная со второго

// и присвоить их massiv1

print_r($massiv1);

?>