2012-04-30 154 views
-1

以某種方式可以在IF的一部分中定義的變量可以在同一IF的另一部分中訪問嗎?是否有可能在IF中使用全局變量?

例:

if ($a == 1) 
{ 
    $b = "ABC"; 
} 
elseif ($a == 2) 
{ 
echo $b; 
} 

在功能我用全局變量$但IF語句,我不知道。

我之所以問這個問題,是因爲我正在逐步製作一個註冊頁面。
這意味着我需要檢查這個If語句很多次,並且在最後一步我需要從所有IF中收集所有變量。

+0

是的,你爲什麼不嘗試?變量是變量......儘管它不一定很有意義。一次只執行'if-else'語句的一個分支。如果語句執行兩次,它纔會有意義。 –

+1

我不明白你爲什麼要在if和else中顯示相同的變量? –

+0

我正在逐步製作註冊頁面。我希望所有的汽車都能在最後一步獲得。 – xRed

回答

3

沒有「全局」變量,你瞭解他們的方式。
所有的PHP變量在執行後都註定要與所有的PHP腳本一起死掉。

您需要一些存儲來保持請求之間的變量。
PHP sessions是一個不錯的選擇。

-2
$b = Null 
if ($a == 1) 
{ 
    $b = "ABC"; 
} 
elseif ($a == 2) 
{ 
echo $b; 
} 
0

哦,不看$一個只有1個值它也許1或2或別的東西,如果它的1,那麼$ B = ABC,它永遠不要出自於你的elseif的條件,如果$ a是2,那麼它從未進入在你的第一個條件,但是你可以在條件之前定義$ b。

$b = "something"; 
if ($a == 1) 
{ 
    $b = "ABC"; // $b is ABC if $a = 1 
} 
elseif ($a == 2) 
{ 
echo $b; // output : something, if $a = 2 
} 
1

PHP中的IF語句確實不是而是更改變量作用域 - 與函數不同。因此,只要您保持在相同的範圍內,您在IF中所做的任何事情都可以在IF外面看到。你不需要使用GLOBAL。事實上,全球範圍應儘可能少使用。

全局聲明只是擴大了範圍,允許PHP「看到」否則會隱藏的事情。你仍然需要了解變量範圍,因爲範圍的相互作用並不總是很明顯。我建議回去閱讀優秀的PHP文檔。您可能需要仔細閱讀它幾次,並在點擊之前嘗試一下。

你的代碼的問題是,除非它在一個你沒有顯示的循環內,否則你永遠不會看到$ b的值,因爲if語句是分支,你將只執行樹枝從未超過1

你的榜樣的另一個問題是,你正在使用if語句鏈接,這將是更好的寫爲:

switch ($a) { 
    case 1: 
     $b = "ABC"; 
     break; 
    case 2: 
     # $b will ALWAYS be empty unless you set it BEFORE the switch OR 
     # you loop back to the switch AFTER $a=1 
     echo $b; 
     break; 
    default: 
     echo "i is not equal to 1 or 2"; 
} 

參見:http://php.net/manual/en/control-structures.switch.php

隨着案例數量的增加,這種形式更加清晰易讀,簡單得多。

相關問題