Чтобы использовать внутри функции переменные, заданные вне ее, эти переменные нужно объявить как глобальные. Для этого в теле функции следует перечислить их имена после ключевого слова 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. Глобальные переменные (html, txt)
В результате работы этого скрипта получим:
вне функции $a=1, в результате работы функции $a=2 вне функции $a=2, в результате работы функции $a=4
Когда переменная объявляется как глобальная, фактически создается ссылка на глобальную переменную. Поэтому такая запись эквивалентна следующей (массив GLOBALS содержит все переменные, глобальные относительно текущей области видимости):
$var1 = & $GLOBALS["var1"]; $var2 = & $GLOBALS["var2"];
Это значит, например, что удаление переменной $var1 не удаляет глобальной переменной $_GLOBALS["var1"].