Доступ к глобальной переменной внутри функции

Задача
Необходимо получить доступ к глобальной переменной внутри функции.

Решение
Поместите глобальную переменную в локальную область видимости с помощью ключевого слова 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'];

Оцените статью: (0 голосов)
0 5 0

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

Вернуться в раздел: PHP / 6. Функции