在运行时重命名php中的变量名

时间:2011-06-21 16:47:15

标签: php arrays variables simplexml renaming

我正在尝试将xml文档转换为关联数组。 我希望数组的名称是xml文档中的根节点。 我通过$xml->getName()获取此信息。

我想过用这个语句创建一个空数组,但它不起作用。

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

其他方式应该是创建临时变量并使用$xml->getName()重命名它。有没有办法在PHP中做到这一点?

2 个答案:

答案 0 :(得分:3)

您可以这样创建:

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

您可能还希望验证名称以确保其符合PHP变量名称标准,以避免运行时错误。

答案 1 :(得分:1)

乔治是对的,${$xml->getName()} = array();将允许你基本上做你所要求的。

正如lonesomeday所说,这是一个坏主意。您最好将所有功能包装在一个函数中,然后将其返回到更大的上下文中。如果你不舒服,那就把它作为阵列中的钥匙。这是问题所在:

  1. 无法抽象此功能 - 想象您希望它成为函数或类的一部分(您应该考虑 ) ,你如何知道调用函数的类/上下文知道$ root现在是对XML的引用?
  2. 无法在脚本中加载多个文件,如果您有两个以<root>开头的文件,它们会相互杀死(这甚至会阻止使用数组键)。
  3. 导致调试问题。至少,您需要确保XML语法和PHP语法没有问题。这导致调试时间增加和维修周期,因此技术膨胀。
  4. 在定义上,它是破坏性意外行为 - 它会以对下一个程序员不明显的方式影响其环境,并且它有可能取消设置变量其他一些程序员已设定。