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

在运行时重命名php中的变量名,php,arrays,variables,simplexml,renaming,Php,Arrays,Variables,Simplexml,Renaming,我正在尝试将xml文档转换为关联数组。 我希望数组的名称是xml文档中的根节点。 我通过$xml->getName()获得此信息 我曾想过使用此语句创建一个空数组,但它不起作用 $($xml->getName()) = array(); 另一种方法应该是创建一个临时变量并使用$xml->getName()重命名它。有没有一种方法可以在PHP中实现这一点 您可以这样创建它: ${$xml->getName()} = array(); 您可能还希望验证名称,以确保其符合PHP变量名称

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

我曾想过使用此语句创建一个空数组,但它不起作用

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

另一种方法应该是创建一个临时变量并使用
$xml->getName()
重命名它。有没有一种方法可以在PHP中实现这一点

您可以这样创建它:

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

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

您可以通过以下方式创建它:

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

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

George是对的,
${$xml->getName()}=array()
将允许您基本上执行您要求的操作

正如lonesomeday所说,这是个坏主意。最好将所有这些功能包装到一个函数中,然后简单地将其返回到更大的上下文中。如果你觉得不舒服,就把它当作数组中的一个键。但问题是:

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

  • 乔治是对的,
    ${$xml->getName()}=array()
    将允许您基本上执行您要求的操作

    正如lonesomeday所说,这是个坏主意。最好将所有这些功能包装到一个函数中,然后简单地将其返回到更大的上下文中。如果你觉得不舒服,就把它当作数组中的一个键。但问题是:

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

  • 你为什么要这样做?这似乎不太可能是个好主意……我同意@lonesomeday,但无论如何:你为什么要这么做?这似乎不太可能是个好主意……我同意@lonesomeday,但无论如何: