如何在PHP中动态创建全局变量

时间:2015-09-17 21:01:20

标签: php php-5.6

我需要通过动态函数在PHP中创建一些全局变量,以便在函数之外使用

我试过

<?php
function setthis(newglobal){
  global $_.newglobal._1;
  $_.newglobal._1 = "pampam";
}
setthis();

 echo $_newglobal_1;
?>

我收到此错误

行:2,错误类型:4

  

消息:语法错误,意外')',期待'&amp;'或变量   (T_VARIABLE)

我也尝试将它们包含在引用变量中,如

<?php
function setthis(newglobal){
  global $_.'newglobal'._1;
  $_newglobal_1 = "pampam";
}
setthis();

 echo $_newglobal_1;
?>

我收到错误消息

  

:语法错误,意外')',期待'&amp;'或变量   (T_VARIABLE)

如果这在PHP中可行,请告诉我吗?或者我做错了什么?

  

更新

<?php
function setthis($name){
    $GLOBALS[$name];
    $name = "pampam";
}
setthis();
echo $name;
?>

2 个答案:

答案 0 :(得分:7)

您的错误始终位于函数标题中:

SyntasticInfo

然后只需使用$GLOBALS数组,例如

function setthis(newglobal){
               //^^^^^^^^^ needs a '$' in front of it

答案 1 :(得分:2)

您可以使用括号设置动态变量名称:

$name = 'key';
${$name} = 'value';
echo $key; // Will echo 'value'

如下所述: Dynamic variable names in PHP

您的代码看起来像:

<?php

function setthis($global_key, $global_value){
  global ${"_" . $global_key . "_1"};

  ${"_" . $global_key . "_1"} = $global_value;
}

setthis('newglobal', 'pampam value');

echo $_newglobal_1; // Will echo 'pampam value'

?>

或者您可以使用PHP的GLOBALS数组(全局):

<?php

function setthis($global_key, $global_value){
  $GLOBALS[ $global_key ] = $global_value;
}

setthis('newglobal', 'pampam value');

echo $GLOBALS['newglobal']; // Will echo 'pampam value'

?>

所有这些信息都在PHP文档中:http://php.net/manual/en/language.variables.scope.php