【发布时间】:2010-11-02 22:30:35
【问题描述】:
我正在尝试在 PHP 中构建一个动态变量,尽管在 StackOverflow 上查看了许多关于此问题的问题,但我仍然感到困惑...:/
变量是我从来没有完全理解的东西——希望这里有人能指出我正确的方向。 :)
$data['query']->section[${$child['id']}]->subsection[${$grandchild['id']}]->page[${$greatgrandchild['id']}] = "Fluffy Rabbit";
上述方法不起作用,但如果我这样硬编码一个变量:
$data['query']->section[0]->subsection[3]->page[6] = "Very Fluffy Rabbit";
...那么一切都很好,所以显然我没有正确构建我的动态变量。有什么想法吗?
更新:
嗯,好的,我应该指出这些不是数组中的键 - 我正在使用指定为每个节点的属性的 ID 来寻址 XML 中的节点,因此 XML 具有以下结构:
<subtitles>
<section id="0">
<subsection id="0">
<page id="1">My content that I want to write</page>
<page id="2">My content that I want to write</page>
<page id="3">My content that I want to write</page>
</subsection>
</section>
</subtitles>
希望这有助于更好地解释事情。 :)
【问题讨论】:
-
变量-变量是邪恶的,应该避免。特别是在您的情况下,即使您在编写它时也无法弄清楚......想象一下当您需要修复错误时,弄清楚一年中发生的事情将是多么困难。编写可读的代码。写简单的代码...
-
@ircmaxell 它可以简化代码,甚至使其更具可读性。例如,想象一个工厂,巨大的开关(创建几十个类),而不是这段代码:
factory($class_name){return new $class_name()} -
@Itay Moav:在这种情况下,如果你添加一个不存在的 $class_name,你的应用就会死掉。
-
@Itay Moav:我不认为这是一个变量。当然这是一个非常相似的概念(类似于
$foo($bar)),但我说的是$$foo或${$foo}...其中变量被存储在另一个变量中的名称引用(变量的真实定义-变量)... -
@Stegeman 只是为了展示这个想法,添加 is_class 或类似的东西很容易,并且有一个默认类。