Diferença de escopo variável entre PHP e C: o escopo do bloco não é exatamente o mesmo?

O código PHP a seguir será exibido3.

function main() {
    if (1) {
        $i = 3;
    }
    echo $i;
}

main();

Mas o código C a seguir gerará um erro de compilação.

void main() {
    if (1) {
        int i = 3;
    }

    printf("%d", i);
}

Então variáveis no PHP não são estritamente de escopo de bloco? No PHP, variáveis definidas no bloco interno podem ser usadas no bloco externo?

questionAnswers(1)

yourAnswerToTheQuestion