我已经定义了一个$foo
全局变量。
稍后,我想将$foo
设置为其他内容。
public function bar()
{
global $foo;
$foo = 'hello';
}
是否有意外的副作用将此缩短为一行?
public function bar()
{
global $foo = 'hello';
}
我查看了the documentation并且看不到它们在同一行上声明并分配变量。因此,我想知道是否有其他人遇到过这样做的问题,或者是否只是将编码练习放在一条线上?
答案 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
有点混乱,但在某些情况下看起来还是比一次分配的两行代码更好。