我想有一個函數,除其他外,我聲明一個變量,我給它的全局變量。 失敗的部分是使變量全球變量名稱的PHP全局變量
function setGlobalVariable($name) {
global $name, $arrayname_{$name};
}
任何想法? 謝謝:)
我想有一個函數,除其他外,我聲明一個變量,我給它的全局變量。 失敗的部分是使變量全球變量名稱的PHP全局變量
function setGlobalVariable($name) {
global $name, $arrayname_{$name};
}
任何想法? 謝謝:)
真的,停止搞亂全局變量的方式。這裏
Anywaym是你的解決方案,如果你真的想這樣做:
function setGlobalVariable($name) {
$GLOBALS['arrayname_' . $name] = 'yourvalue';
}
你不應該這樣做。全局變量通常是設計不佳的標誌。你試圖達到什麼目標?我相信有更好的解決方案。除此之外,global
不能像那樣工作。 global
使您的函數外的其他變量在本地可用。使用$_GLOBAL
創建全局變量。
你幾乎是正確的,但不完全;一個變量變量採取${"name"}
的形式,所以你要找的東西就像global ${"arrayname_$name"};
。
http://www.reddit.com/r/programming/comments/dst56/today_i_learned_about_php_variable_variables/c12np38關於這個話題是非常有趣的閱讀,如果你覺得如此傾向。
雖然這可能是一個可怕的想法,如果你訴諸於這樣的事情,這是一個很好的跡象表明你的代碼可能設計得不好。考慮對其進行重構(例如,保留一個已知數組,您的其他數組保留在其中,並且可以通過鍵引用)。
查看註冊表模式(http://martinfowler.com/eaaCatalog/registry.html)。
一個衆所周知的對象,其他對象 可以用它來找到共同的目標和 服務。
有各種PHP實現,例如合適的詞彙:http://framework.zend.com/manual/en/zend.registry.html
你爲什麼要與污染變量的全局命名空間? – stillstanding 2010-11-23 11:27:06