如何在PHP中调用全局动态变量

问题描述:

我试图找到解决方案,因为很多小时,但我无法解决它(我不是一个程序员;))。如何在PHP中调用全局动态变量

在函数上,我设置了一个动态数组,我想在另一个函数中使用。 要做到这一点,我想使用$ GLOBALS []数组 我没有问题从函数调用变量之一,但是当我尝试在函数2中使用它时,它不起作用。

这里是我的代码:

function one($name,$a,$b,$c) 
{ 
// $GLOBALS[${$name}] = array($a,$b,$c); 
global $$name; 
$$name = array($a,$b,$c); 
} 



function two($name) 
{ 
$name="D1"; 
echo ${$name}[1]; 
} 

one("D1",10,20,30); 
one("D2",100,200,300); 
two("D1");  // doesn't works 


$name="D1"; 
echo ${$name}[1]; // works, gives 20 
$name="D2"; 
echo ${$name}[1]; // works, gives 200 

它不工作,我不明白为什么。 感谢您的帮助。

艾蒂安

+2

http://php.net/manual/en/language.variables.scope.php –

+2

[参考:什么是变量作用域,哪些变量可以从哪里访问,什么是未定义变量错误?] (https://*.com/questions/16959576/reference-what-is-variable-scope-which-variables-are-accessible-from-where-and) – GrumpyCrouton

+0

使用'global $ name;'可能更容易 – PaulH

<?php 

function one($name,$a,$b,$c) 
{ 
    global $$name; 
    $$name = array($a,$b,$c); 
} 

function two($name) 
{ 
    global $$name; 
    echo ${$name}[0]; 
} 

one("D1",10,20,30); 
two("D1"); 

函数的作用域与全局作用域不同。

+0

非常感谢Progrock! – Etienne

+0

我不知道,我认为全球范围是包括所有功能的文件!我想确定理解。要在另一个函数中使用'global'变量,您需要使用'global'在函数中声明它。我刚刚再次阅读法语PHP用户指南,我写它,但它不是很清楚;)所以非常感谢你! – Etienne

怎么做这样的事情:

function one() { 
    $dynamicArray = generateDynamicArray(); 
    return $dynamicArray; 
} 

function two() { 
    $one = one(); // if it's in a class use: $this->one(); 
    foreach($one in $key=>$value) { 
     // your code for each item in the array we got form function one() 
    } 
} 

,而不是全局定义它。

+0

亲爱的Chandlerbing, 谢谢你的回答,但我没有足够的技能来理解它。 我澄清了我的问题,希望对你更清楚。谢谢 – Etienne