PHP switch statement variable scope

2019-02-10 15:37发布

In PHP, how is variable scope handled in switch statements?

For instance, take this hypothetical example:

$someVariable = 0;

switch($something) {

    case 1:
        $someVariable = 1;
        break;

    case 2:
        $someVariable = 2;
        break;
}

echo $someVariable;

Would this print 0 or 1/2?

4条回答
太酷不给撩
2楼-- · 2019-02-10 15:56

It will print 1 or 2 if you change the value of $someVariable in the switch statement, and 0 if you don't.

查看更多
再贱就再见
3楼-- · 2019-02-10 16:08

It will print 1 or 2. Variables in PHP have the scope of the whole function.

查看更多
爷的心禁止访问
4楼-- · 2019-02-10 16:09

PHP does only have a global and function/method scope. So $someVariable inside the switch block refers to the same variable as outside.

But since $something is not defined (at least not in the code you provided), accessing it raises a Undefined variable notice, none of the cases match (undefined variables equal null), $someVariable will stay unchanged and 0 will be printed out.

查看更多
祖国的老花朵
5楼-- · 2019-02-10 16:10

The variable will be the same in your whole portion of code : there is not variable scope "per block" in PHP.

So, if $something is 1 or 2, so you enter in one of the case of the switch, your code would output 1 or 2.

On the other hand, if $something is not 1 nor 2 (for instance, if it's considered as 0, which is the case with the code you posted, as it's not initialized to anything), you will not enter in any of the case block ; and the code will output 0.

查看更多
登录 后发表回答