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 行代码完成一个作业要好。
我定义了一个$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 行代码完成一个作业要好。