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