2011-06-21 24 views
0

我想將xml文檔轉換爲關聯數組。 我希望數組的名稱是xml文檔中的根節點。 我通過$xml->getName()獲取此信息。在運行時在php中重命名變量名

我想用這個語句創建一個空數組,但它不起作用。

$($xml->getName()) = array(); 

其他方式應該創建一個臨時變量,並與$xml->getName()重新命名它。有什麼辦法可以在PHP中做到這一點?

+4

你爲什麼要這麼做?這似乎不太可能是一個好主意... – lonesomeday

+0

我同意@lonesomeday,但不過:http://php.net/manual/en/language.variables.variable.php –

回答

3

您可以創建這樣說:

${$xml->getName()} = array(); 

你也不妨來驗證的名稱以確保它符合PHP變量名的標準來避免運行時錯誤。

+0

謝謝..它工作:) – rkt

1

喬治是對的,${$xml->getName()} = array();將允許你基本上做你要求的東西。

由於寂寞天提出,這是一個壞主意。您最好將所有這些功能包裝在一個函數中,並簡單地將其返回到更大的上下文中。如果你覺得不舒服,那麼把它作爲一個數組的關鍵。這裏的問題,但:

  1. 不能抽象此功能 - 想象一下,你希望這是一個函數或類的一部分(你應該思考的反正),如何你會有調用函數的類/上下文知道$ root現在是對XML的引用嗎?
  2. 不能在腳本中加載多個文件,如果你有兩個以<root>開頭的文件,它們會互相干掉(這甚至會阻止使用數組鍵)。
  3. This will lead to debug issues。至少,您需要確保XML語法和PHP語法沒有問題。這導致維護週期的調試時間增加,從而導致技術膨脹。
  4. Definitionally,它是破壞性意外行爲 - 它會影響它的環境中,並不能馬上體現到下一個程序員的方式,它具有一些其他的程序員已經設置尚未設定的變量的潛力。