我正在尝试在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中的节点,该ID被指定为每个节点的属性,因此XML具有以下结构: / p>
<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>
希望这有助于更好地解释事情。 :)
答案 0 :(得分:6)
为什么你认为这里需要动态变量?这不是你想做的事情吗?
$data['query']->section[$child['id']]->subsection[$grandchild['id']]->page[$greatgrandchild['id']] = "Fluffy Rabbit";
答案 1 :(得分:1)
$foo = "hello";
$$foo = " world";
//echo $foo.$$foo;
echo $foo.$hello;
答案 2 :(得分:1)
在此示例中,您不需要动态变量。
如果$ child [“id”]的值为0,$ grandchild [“id”]的值为3且$ greatgrandchild [“id”]的值为6,则应使用以下内容:
$data['query']->section[$child['id']]->subsection[$grandchild['id']]->page[$greatgrandchild['id']] = "Fluffy Rabbit";
通常你使用这样的动态变量:
$variable = "variableName";
$$variable = "Some value";
echo $variableName;
这将显示:
Some value
修改强>
完全同意ircmaxell
答案 3 :(得分:1)
我看起来好像让variable variables混淆了旧的array键。变量变量是一种机制,允许将一个值读取(或写入)一个名称未知或可以更改的变量,老实说,它们几乎不需要:
<?php
$first_name = 'John';
$last_name = 'Smith';
$display = 'first_name';
echo $$display; // Prints 'John';
$display = 'last_name';
echo $$display; // Prints 'Smith';
但是,您的代码建议您只想访问数组中的键:
<?php
$person = array(
'first_name' => 'John',
'last_name' => 'Smith',
);
$display = 'first_name';
echo $person[$display]; // Prints 'John';
$display = 'last_name';
echo $person[$display]; // Prints 'Smith';
在PHP中,数组键是整数或字符串,但它不需要是文字:您可以从变量中检索键。
答案 4 :(得分:0)
$foo='bobo';
echo $foo;//"bobo"
$$foo='koko';
echo $$foo;//"koko"
echo $bobo;//"koko"