带有变量名的php全局变量

时间:2010-11-23 11:25:26

标签: php

我正在尝试使用一个函数来根据我给它的变量声明全局变量。 失败的部分是使变量全局化

function setGlobalVariable($name) {

    global $name, $arrayname_{$name};
}

任何想法? 谢谢:))

4 个答案:

答案 0 :(得分:6)

真的,不要那样乱搞全局变量。

无论如何,如果您真的想这样做,这是您的解决方案:

function setGlobalVariable($name) {
    $GLOBALS['arrayname_' . $name] = 'yourvalue';
}

答案 1 :(得分:3)

你不应该这样做。全局变量通常是设计不佳的标志。你想要达到的目标是什么?我相信有更好的解决方案。除此之外,global不起作用。 global使您的函数之外的其他变量在本地可用。使用$_GLOBAL创建全局变量。

答案 2 :(得分:1)

查看注册表模式(http://martinfowler.com/eaaCatalog/registry.html)。

  

其他对象的着名对象   可以用来找到共同的对象和   服务。

有各种PHP实现,例如Zend_Registry:http://framework.zend.com/manual/en/zend.registry.html

答案 3 :(得分:0)

你几乎是对的,但并不完全;变量变量采用${"name"}的形式,因此您需要的是global ${"arrayname_$name"};

如果你有这种倾向,那么

http://www.reddit.com/r/programming/comments/dst56/today_i_learned_about_php_variable_variables/c12np38就这个话题很有吸引力。

但是,这可能是一个可怕的想法,如果你正在诉诸这种事情,那么很好地表明你的代码可能设计得很糟糕。考虑重构它(例如,保留一个已保存其他数组的已知数组,并且可以通过键引用。)