PHP全局关键字和赋值

时间:2016-03-30 14:10:20

标签: php global-variables global

我已经定义了一个$foo全局变量。

稍后,我想将$foo设置为其他内容。

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

是否有意外的副作用将此缩短为一行?

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

我查看了the documentation并且看不到它们在同一行上声明并分配变量。因此,我想知道是否有其他人遇到过这样做的问题,或者是否只是将编码练习放在一条线上?

2 个答案:

答案 0 :(得分:2)

如果您尝试运行问题中建议的代码,则会出现语法错误。您不能像上面那样定义全局变量。

如果您仍希望在一行中定义该值,则可以使用$GLOBALS数组,如下所示:

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

如果你想看一下,这里是the documentation

你可以在这里设置变量:

function bar(){

    global $hello;
    $hello = "hello";

}

然后稍后编辑它:

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

如果您运行此代码:

bar();
foo();

print_r($GLOBALS);

$GLOBALS['hello']的值为'world'。如果在foo();之前执行bar();而另行,那么您将获得'hello'作为全局值。

答案 1 :(得分:0)

我的解决方案不使用a,只需一行:

$GLOBALS

有点混乱,但在某些情况下看起来还是比一次分配的两行代码更好。