PHP switch语句变量范围

时间:2010-02-21 15:00:14

标签: php switch-statement scope

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

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

$someVariable = 0;

switch($something) {

    case 1:
        $someVariable = 1;
        break;

    case 2:
        $someVariable = 2;
        break;
}

echo $someVariable;

这会打印0还是1/2?

4 个答案:

答案 0 :(得分:7)

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

因此,如果$something12,那么您输入case的{​​{1}}之一,您的代码将输出1或2。

另一方面,如果switch不是$something也不是1 (例如,如果它被视为2,则情况就是如此您发布的代码,因为它没有初始化为任何内容),您不会输入任何0块;并且代码将输出case

答案 1 :(得分:5)

PHP只有global and function/method scope。因此$someVariable块内的switch引用与外部相同的变量。

但由于$something未定义(至少在您提供的代码中没有定义),访问它会引发未定义变量通知,所有情况都不匹配(未定义的变量等于{{ 1}}),null将保持不变,$someVariable将被打印出来。

答案 2 :(得分:1)

它将打印1或2. PHP中的变量具有整个功能的范围。

答案 3 :(得分:1)

如果更改switch语句中$someVariable的值,则会打印1或2,如果不更改,则打印0。