Wiki-учебник по веб-технологиям: PHP/Cookies/ИспользованиеПеременныхВнутриФункции ...

Главная | Каталог |

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


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

Чтобы использовать внутри функции переменные, заданные вне ее, эти переменные нужно объявить как глобальные. Для этого в теле функции следует перечислить их имена после ключевого слова 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();
?>


Пример 5.7. Глобальные переменные

В результате работы этого скрипта получим:

вне функции $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
?>


Пример 5.8. Использование статической переменной