在PHP中,如何在switch语句中处理变量作用域?
例如,采用这个假设的例子:
$someVariable = 0;
switch($something) {
case 1:
$someVariable = 1;
break;
case 2:
$someVariable = 2;
break;
}
echo $someVariable;
这会打印0还是1/2?
答案 0 :(得分:7)
变量在整个代码部分中都是相同的:PHP中没有“每个块”的变量范围。
因此,如果$something
为1
或2
,那么您输入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。