2010-11-23 225 views
1

我想有一个函数,除其他外,我声明一个变量,我给它的全局变量。 失败的部分是使变量全球变量名称的PHP全局变量

function setGlobalVariable($name) { 

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

任何想法? 谢谢:)

+3

你为什么要与污染变量的全局命名空间? – stillstanding 2010-11-23 11:27:06

回答

6

真的,停止搞乱全局变量的方式。这里

Anywaym是你的解决方案,如果你真的想这样做:

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

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

0

你几乎是正确的,但不完全;一个变量变量采取${"name"}的形式,所以你要找的东西就像global ${"arrayname_$name"};

http://www.reddit.com/r/programming/comments/dst56/today_i_learned_about_php_variable_variables/c12np38关于这个话题是非常有趣的阅读,如果你觉得如此倾向。

虽然这可能是一个可怕的想法,如果你诉诸于这样的事情,这是一个很好的迹象表明你的代码可能设计得不好。考虑对其进行重构(例如,保留一个已知数组,您的其他数组保留在其中,并且可以通过键引用)。