Что внутри, а что снаружи... ну-ка... поглядим...

Итак, задача опять таки состоит в том, чтобы узнать, что выведется на экран

<?
$a 
'';        // Создаем переменную $a с пустой строкой
function test(){
    
$a 2;        // Создается локальная переменная, ничего общего с переменной $a вне функции она не имеет в данном контексте
}

test();            // Вызываем функцию test()
echo $a;        // Ничего не выведется
?>

Чтобы вывести значение переменной $a можно воспользоваться несколькими способами
Первый вариант

<?
$a 
'';        // Создаем переменную $a с пустой строкой
function test(){
    global 
$a;    // Фактически, запись означает вид $a = $GLOBAL['a'];
    
$a 3;        // Присваиваем значение 3 глобальной переменной $a, которая доступна как внутри функции, так и вне ее
}

test();            // Вызываем функцию test()
echo $a;        // Выведется 3
?>


Второй вариант

<?
$a 
'';        // Создаем переменную $a с пустой строкой
function test(&$a){
    
$a 4;        // Присваиваем значение 4 переменной $a по ссылке
}

test($a);        // Вызываем функцию test()
echo $a;        // Выведется 4
?>