PHP switch语句变量范围

Phi*_*ton 5 php scope switch-statement

在PHP中,如何在switch语句中处理变量作用域?

例如,采用这个假设的例子:

$someVariable = 0;

switch($something) {

    case 1:
        $someVariable = 1;
        break;

    case 2:
        $someVariable = 2;
        break;
}

echo $someVariable;
Run Code Online (Sandbox Code Playgroud)

这会打印0还是1/2?

Pas*_*TIN 7

变量在整个代码部分中都是相同的:PHP中没有"每个块"的变量范围.

所以,如果$something12,让你在的一个进入caseswitch,你的代码将输出1或2.

另一方面,如果$something不是1也不是2 (例如,如果它被认为是0,你发布的代码就是这种情况,因为它没有被初始化为任何东西),你将不会进入任何一个case区块; 并输出代码0.


Gum*_*mbo 5

PHP只有一个全局和函数/方法范围.所以$someVariableswitch块内部引用与外部相同的变量.

但由于$something未定义(至少不在您提供的代码中),访问它会引发一个未定义的变量通知,没有一个匹配(未定义的变量相等null),$someVariable将保持不变并将0打印出来.