在PHP中,如何在switch语句中处理变量作用域?PHP switch语句变量范围
举例来说,利用这个假设的例子:
$someVariable = 0;
switch($something) {
case 1:
$someVariable = 1;
break;
case 2:
$someVariable = 2;
break;
}
echo $someVariable;
这会打印0或1/2?
在PHP中,如何在switch语句中处理变量作用域?PHP switch语句变量范围
举例来说,利用这个假设的例子:
$someVariable = 0;
switch($something) {
case 1:
$someVariable = 1;
break;
case 2:
$someVariable = 2;
break;
}
echo $someVariable;
这会打印0或1/2?
该变量在您的代码的整个部分中都是相同的:PHP中没有可变范围“per block”。
所以,如果$something
是1
或2
,让你在switch
的case
的一个输入,你的代码将输出1或2
在另一方面,如果$something
不1
也不2
(例如,如果它被认为是0
,这是你发布的代码的情况,因为它没有被初始化为任何东西),你不会输入任何case
块;代码将输出0
。
即使PHP具有词法范围,'switch_'块中仍然可以访问'$ someVariable'。 – 2010-02-21 15:05:48
它会打印1或2.PHP中的变量具有整个功能的范围。
如果您在switch语句中更改$someVariable
的值,将打印1或2,如果您不更改,则打印0。
PHP只有一个global and function/method scope。所以$someVariable
里面的switch
块指的是和外面一样的变量。
但由于$something
没有定义(至少在你提供的代码),访问它提出了一个未定义变量通知,没有任何一个实例相匹配(未定义变量等于null
),$someVariable
将保持不变,并0
会打印出来。
你为什么不试试呢? – Gumbo 2010-02-21 15:06:02