0

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

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

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

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

4

2 回答 2

3

你可以这样创建它:

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

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

于 2011-06-21T16:49:41.207 回答
1

乔治是对的,${$xml->getName()} = array();他会让你基本上做你想做的事。

正如 lonesomeday 建议的那样,这是一个坏主意。您最好将所有这些功能包装在一个函数中,然后简单地将其返回到更大的上下文中。如果您不舒服,请将其设置为数组中的键。这是问题所在:

  1. 无法抽象此功能-假设您希望它成为函数或类的一部分(无论如何您都应该考虑),您如何让调用函数的类/上下文知道 $root现在是对您的 XML 的引用吗?
  2. 不能在脚本中加载多个文件,如果您有两个以 开头的文件<root>,它们将相互杀死(这甚至会阻止使用数组键)。
  3. 导致调试问题。至少,您需要确保 XML 语法和 PHP 语法没有问题。这会导致调试和维护周期的时间增加,从而导致技术膨胀。
  4. 从定义上讲,它是破坏性意想不到的行为——它影响环境的方式对下一个程序员来说不是立即显而易见的,并且它有可能取消其他程序员设置的变量。
于 2011-06-21T17:01:23.850 回答