PHP开关语句变量范围

PHP开关语句变量范围,php,switch-statement,scope,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?变量在整个代码部分中都是相同的:PHP中没有“每个块

在PHP中,如何在switch语句中处理变量范围

例如,以这个假设的例子:

$someVariable = 0;

switch($something) {

    case 1:
        $someVariable = 1;
        break;

    case 2:
        $someVariable = 2;
        break;
}

echo $someVariable;

这会打印0还是1/2?

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

因此,如果
$something
1
2
,那么您在
开关的
案例中输入
,您的代码将输出1或2


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

它将打印1或2。PHP中的变量具有整个函数的作用域。

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

PHP只有一个值。因此,
开关
块内的
$someVariable
引用与外部相同的变量


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

即使PHP有词法范围,
$someVariable
仍然可以在
开关
块中访问。为什么不试试呢?