2013-05-13 261 views
0

我想在PHP中定义多个临时全局变量称为$MyGlobalVar1$MyGlobalVar2 ...,但问题是,关键字“全球化”需要变量名字的字面:组变量全局范围

for ($i = 1; $i<= 10; $i++) { 
    $var = '$MyGlobalVar'.$i; 
    global $var; 
} 

$var现在是全球性的。

设置的报价将无法工作,因为“全球”预计“$”,并将在单引号停止执行:

for ($i = 1; $i<= 10; $i++) { 
    $var = '$MyGlobalVar'.$i; 
    global '$var'; 
} 

如何设置变量,全局范围?谢谢。

回答

1

as string

试试 $GLOBALS为您的目的

for ($i = 1; $i<= 10; $i++) 
{ 
// acess as $GlOBALS['MyGlobalVar'.$i] and do whatever you want 
    $GLOBALS['MyGlobalVar'.$i] = null 
} 
+0

我认为$ GLOBALS仍然需要我分别定义每个变量,然后才能在循环中使用它们。然后我没有获得通过使用循环。我想创建变量并使用循环将它们定义为全局变量。如果我理解正确,这将只用它们。 – user2317194 2013-05-13 05:04:14

+0

看到我编辑的答案..通过这种方法..你实际上定义变量为全球 – alwaysLearn 2013-05-13 05:05:58

+0

是的,dreamCoder,它的工作原理和$ GLOBALS转储将显示$ MyGlobalVar1 .. 10好的。谢谢。但是还有一件事情发生了:当单独定义全局变量时,它们的值为NULL,所以我尝试了$ GlOBALS ['MyGlobalVar'。$ i] =&null,但是我得到“语法错误,意外';',期待T_PAAMAYIM_NEKUDOTAYIM”作为错误消息。如何将我新生成的变量的值设置为&NULL? – user2317194 2013-05-13 05:41:44

0

这是因为单引号不能分析变量,你必须使用双引号。你应该知道它们之间的基本区别。

首先,你不需要围绕全局变量引用试试这个

global $var; 
+0

双引号有同样的效果,即“全球”预计“$”,绝对不会容忍单或双引号。 – user2317194 2013-05-13 04:56:14

0

你才能尝试variabling你的变量,即:既然你使用'它将始终采取

for ($i = 1; $i<= 10; $i++) { 
    $var = '$MyGlobalVar'.$i; 
    $foo = $var; 
    global $foo; 
} 
+0

这不起作用。另外,我尝试了全局$$ var;你的代码的结果是一个全局变量$ foo,其值为$ MyGlobalVar10。 – user2317194 2013-05-13 05:14:17

+0

从$ MyGlobalVar中删除'' – Ansipants 2013-05-13 05:44:09

+0

但是这个字符串作为变量名的固定部分是一个要求。 – user2317194 2013-05-13 05:53:13

1

你应该能够做到以下几点,以及:

for ($i = 1; $i<= 10; $i++) { 
    $varName = 'MyGlobalVar'.$i; 
    global $$varName; 
}