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

Область видимости переменных бывают двух видов: глобальные и локальные.

Переменные внутри функций называются локальные переменные, и доступны только внутри функции.

function get_lang() {
    $lang = 'PHP';
}

get_lang();
echo $lang; // Ошибка: Неизвестная переменная $lang

При этом, если уже есть переменная $lang, то локальная переменная внутри функции не изменяет уже существующую переменную.

$lang = 'PHP';

function get_lang() {
    $lang = 'Python';
}

get_lang();
echo $lang; // PHP (переменная не изменилась)

Если внутри функции надо использовать уже существующую переменную, то её надо вызвать через ключевое слово global.

$lang = 'PHP';

function get_lang() {
    global $lang; // Теперь $lang доступна внутри функции
    $lang = 'Python';
}

get_lang();
echo $lang; // Python