Область видимости переменных

STRanger

Новичок
Область видимости переменных

Вот в чем проблема: (допустим)

PHP:
$a=0; // наше значение

function ChangeA() {
   $a = 5; /* очень хочу, чтобы функция изменила внешнюю переменную */
}

ChangeA();
echo $a; // как видим, значение = 0
Пробовал ставить перед $a (внешней) ключевое слово global... результат тот же самый. Т.е. функция создает внутри новую переменную $a, которая, естественно, удаляется по окончании работы, а наша $a, объявленная вначале остается без изменений :( Каким образом это исправить?
 

STRanger

Новичок
Спасибо! Понял ошибку - global надо было ставить внутри функции, т.е. интерпретатор таким образом видит что мы хотим использовать внешнюю переменную.
PHP:
$a=0; // наше значение 

function ChangeA() { 
   global $a; // указали что будем использовать глобальную переменную
   $a = 5; // изменяю теперь уже внешнюю $a
} 

ChangeA(); 
echo $a; // как видим, значение = 5, ура! =)
 

SiMM

Новичок
А теперь забудь про global и старайся его больше не юзать.
PHP:
function Change(&$a) { $a = 5; }
$a = 0;
Change($a);
echo $a;
[m]language.references[/m]
 

SiMM

Новичок
> атавизм?
Дурной тон и отсутствие универсальности.
 

romy4

invoke [brain]
сслылку как параметр надо использовать только по необходимости. если известно что эта переменная всегда есть и глобальна, то зачем её передавать в функцию как параметр?
 

STRanger

Новичок
SiMM в том-то и дело! Это тот случай, когда я должен использовать переменную таким образом.

romy4 именно так!
 
Сверху