2016-03-30 37 views
2

我已經定義了一個$foo全局變量。PHP全球關鍵字和作業

後來,我想將$foo設置爲別的東西。

public function bar() 
{ 
    global $foo; 
    $foo = 'hello'; 
} 

是否有任何意想不到的副作用將其縮短爲一行?

public function bar() 
{ 
    global $foo = 'hello'; 
} 

我都對着the documentation,並沒有看到他們申報和分配在同一行中的變量。因此,我想知道是否有其他人遇到過這樣的問題,或者如果把它放在一行上只是不好的編碼習慣?

回答

2

如果您嘗試運行您在問題中建議的代碼,則會出現語法錯誤。你不能像上面那樣定義一個全局變量。如果你想看看

public function bar(){ 
    $GLOBALS['foo'] = 'hello'; 
} 

這裏的the documentation

如果你想在一行還定義了價值,你可以使用$GLOBALS陣列,而不是這樣的。後來

function bar(){ 

    global $hello; 
    $hello = "hello"; 

} 

然後在編輯像這樣:


你可以在這裏設置變量

function foo(){ 
    $GLOBALS['hello'] = "world"; 
} 

如果運行這段代碼:

bar(); 
foo(); 

print_r($GLOBALS); 

$GLOBALS['hello']的值將是'world'。當在bar();之前執行的foo();運行時,您將獲得'hello'作爲全局值。

+1

謝謝你的回答。你會認爲他們會提到'global $ hello =「hello」;'會考慮'static $ hello =「hello」引發錯誤;'不會引發錯誤。 – GreeKatrina