Variable scope difference between PHP and C: block scope is not exactly the same?

后端 未结 1 506
长发绾君心
长发绾君心 2020-12-29 03:29

The following PHP code will output 3.

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

main();

But the fol

相关标签:
1条回答
  • 2020-12-29 03:56

    PHP only has function scope - control structures such as if don't introduce a new scope. However, it also doesn't mind if you use variables you haven't declared. $i won't exist outside of main() or if the if statement fails, but you can still freely echo it.

    If you have PHP's error_reporting set to include notices, it will emit an E_NOTICE error at runtime if you try to use a variable which hasn't been defined. So if you had:

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

    The code would run fine, but some executions will echo '3' (when the if succeeds), and some will raise an E_NOTICE and echo nothing, as $i won't be defined in the scope of the echo statement.

    Outside of the function, $i will never be defined (because the function has a different scope).

    For more info: http://php.net/manual/en/language.variables.scope.php

    0 讨论(0)
提交回复
热议问题