Почему в php функция не имеет доступ ко внешним переменным?
Согласно пророчеству.
Если хотите, чтобы функция php видела внешнюю переменную, то её надо импортировать в функцию с помощью
global $a;
Область видимости переменной для полного погружения
https://www.php.net/manual/ru/language.variables.s...

$a = 5;
function inc() {
  return $GLOBALS["a"];
}

var_dump($a); //int(5)

var_dump(inc()); //int(5)