2010-11-23 164 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關於這個話題是非常有趣的閱讀,如果你覺得如此傾向。

雖然這可能是一個可怕的想法,如果你訴諸於這樣的事情,這是一個很好的跡象表明你的代碼可能設計得不好。考慮對其進行重構(例如,保留一個已知數組,您的其他數組保留在其中,並且可以通過鍵引用)。