2010-02-21 188 views
4

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

举例来说,利用这个假设的例子:

$someVariable = 0; 

switch($something) { 

    case 1: 
     $someVariable = 1; 
     break; 

    case 2: 
     $someVariable = 2; 
     break; 
} 

echo $someVariable; 

这会打印0或1/2?

+16

你为什么不试试呢? – Gumbo 2010-02-21 15:06:02

回答

6

该变量在您的代码的整个部分中都是相同的:PHP中没有可变范围“per block”。

所以,如果$something12,让你在switchcase的一个输入,你的代码将输出1或2

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

+1

即使PHP具有词法范围,'switch_'块中仍然可以访问'$ someVariable'。 – 2010-02-21 15:05:48

1

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

1

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

5

PHP只有一个global and function/method scope。所以$someVariable里面的switch块指的是和外面一样的变量。

但由于$something没有定义(至少在你提供的代码),访问它提出了一个未定义变量通知,没有任何一个实例相匹配(未定义变量等于null),$someVariable将保持不变,并0会打印出来。