2010-02-21 77 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會打印出來。