Необходимо получить доступ к глобальной переменной внутри функции.
Поместите глобальную переменную в локальную область видимости с помощью ключевого слова global:
function eat_fruit($fruit) {
global $chew_count;
for ($i = $chew_count; $i > 0; $i -- ) {
...
}
}
Или сошлитесь на нее непосредственно в массиве $GLOBALS:
function eat_fruit($fruit) {
for ($i = $GLOBALS['chew_count']; $i > 0; $i -- ) {
...
}
}
Если внутри функции используется некоторое количество глобальных
переменных, то ключевое слово global может сделать синтаксис функции более легким для понимания, особенно если глобальные переменные размещены в строках.
Глобальные переменные можно поместить в локальную область видимости, указав ключевое слово global со списком переменных, разделенных запятыми:
global $age , $gender , shoe_size;
Можно также задавать имена глобальных переменных с помощью переменных переменных:
$which_var = ' age ';
global $$which_var; // ссылается на глобальную переменную $age
Однако если функция unset() вызывается для переменной, помещенной в локальную область видимости с помощью ключевого слова global, то переменная становится не установленной только внутри функции. Для того чтобы сбросить переменную в глобальной области, надо вызвать функцию unset() для элемента массива $GLOBALS:
$food = ' pizza ';
$drink = ' beer ';
function party() {
global $food , $drink;
unset($food); // едим пиццу
unset($GLOBALS[' drink ']); // пьем пиво
}
print " $food: $drink\n ";
party( );
print " $food: $drink\n ";
pizza: beer
pizza:
Видно, что переменная $food остается той же самой, в то время как переменная $drink стала неустановленной. Объявление переменной глобальной внутри функции подобно присваиванию адреса глобальной переменной локальной переменной:
$food = &GLOBALS[' food '];
Документацию по областям видимости переменных на http://www.php.net/variables.scope и по ссылкам на переменные на http://www.php.net/language.references.