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

завдання
Необхідно отримати доступ до глобальної змінної всередині функції.

Рішення
Помістіть глобальну змінну в локальну область видимості за допомогою ключового слова 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 зі списком змінних, розділених комами:

Можна також задавати імена глобальних змінних за допомогою змінних змінних:

$ 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: