2010-11-21 55 views
1

我知道我可以在函數內使用$ GLOBALS ['var']來引用全局範圍中的變量。 是否有反正我可以在函數內部使用某種聲明,所以我可以使用$ var而不必每次都使用$ GLOBAL ['var']?將所有變量轉換爲全局範圍

喬爾

+4

可變範圍有一個目的。你爲什麼想要恢復? – Gumbo 2010-11-21 12:34:05

+1

這是可行的,但最有可能是一個非常糟糕的主意。請參閱@Gumbo的問題 – 2010-11-21 12:35:10

+0

我完全同意這是一個壞主意。但是,這僅僅是爲了練習,爲了更好地理解如何在需要時創建這樣的事情(儘管這又是一個壞主意) – Joel 2010-11-21 12:48:46

回答

1

雖然不建議,但如果你想,這裏是你可以做什麼:

如果只希望從增值經銷商獲取值(而不是設置的值),只要使用extract

extract($GLOBALS); 

這將提取並創建在當前範圍內的所有變量。

+0

缺少「S」是$ GLOBAL,但它效果很好!謝謝 :) – Joel 2010-11-21 12:56:12

1

如何使用靜態類?

class example 
{ 
    public static $global; 
    public static function set($arr) 
    { 
    foreach ($arr as $key=>$val) 
    { 
     self::$global[$key] = $val; 
    } 
    } 
} 

function example_function() 
{ 
    var_dump(example::$global); 
} 

example::set(array('a'=>1, 'b'=>2)); 
example_function(); 
1

可以使用global關鍵字,所以你可以使用類型$var代替$GLOBALS['var']一個函數內。

function myFunc() { 
    global $var; 
    $var = 3; 
} 
$var = 1; 
myFunc(); 
echo $var; 

輸出:3