PHP开关语句变量范围
在PHP中,如何在switch语句中处理变量范围 例如,以这个假设的例子: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中没有“每个块
$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
仍然可以在开关
块中访问。为什么不试试呢?