2011-11-04 271 views
0

我有一个单独的文件,其中包含变量与他们的设置值。 如何让这些变量成为全局变量?PHP:全局变量范围

Ex。我在values.php文件中的值为$myval。在index.php中,我调用一个需要$myval值的函数。

如果我将include(values.php);添加到index.php文件的开始位置,它会在函数内部放宽作用域。我将在index.php文件中的多个函数中调用相同的变量。

+3

您可能想问问自己为什么使用全局变量以及是否有更好的方法来实现相同的功能。全局变量几乎总是一个坏主意。 – liquorvicar

+0

包括与变量的范围无关,难以调查吗? –

+0

如果我说有东西有全局范围,我希望当我在我的脚本中包含变量被定义的这样的文件时,它将保持在全局范围内,并且可以这样对待。是的,在发现它不起作用后,似乎包含每次脚本运行时都为我重新定义变量。 PHP文档根本不谈论这个。 – Joshua

回答

7

里面的功能,使用global关键字或the $GLOBALS[] array访问变量:

function myfunc() { 
    global $myvar; 
} 

或者,为了更好的可读性:使用$GLOBALS[]。这表明你正在全球范围内访问某些东西。

function myfunc() { 
    echo $GLOBALS['myvar']; 
} 

最后虽然

只要有可能,应避免使用全局变量来开始,而是把它作为参数传递给函数:

function myfunc($myvar) { 
    echo $myvar . " (in a function)"; 
} 

$myvar = "I'm global!"; 
myfunc($myvar); 
// I'm global! (in a function) 
+1

+1 $'GLOBALS'! –

+0

你好downvoter,请分享你的专业知识。 –

0

一样的,如果你声明的变量在同一个文件中。

function doSomething($arg1, $arg2) { 
    global $var1, $var2; 
    // do stuff here 
} 
1

在函数开头使用global关键字会将这些变量带入范围。所以例如

$outside_variable = "foo"; 

function my_function() { 
    global $outside_variable; 
    echo $outside_variable; 
} 
1

是否有一个原因,你不能将该变量传递到你的函数?

myFunction($myVariable) 
{ 
    //DO SOMETHING 
} 

传递变量而不是使用全局变量是一个好得多的想法。