PHP 全局关键字和赋值

PHP global keyword and assignment

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

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

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

将其缩短为一行是否会产生意想不到的副作用?

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

我查看了 the documentation 并没有看到他们在同一行上声明和分配变量。因此,我想知道是否有其他人在执行此操作时遇到过问题,或者将它放在一行中是否只是一种糟糕的编码习惯?

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

如果您仍然想在一行中定义该值,您可以使用 $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' 作为全局值。

我的一行解决方案没有使用 $GLOBALS:

global $foo; $foo = 'hello';

有点乱,但在某些情况下看起来比 2 行代码完成一个作业要好。