我有一个以这种方式制作的XML:
<marketstat>
<type id="17889">
<buy>
<volume>15005046</volume>
<avg>704.84</avg>
<max>755.88</max>
<min>428.10</min>
<stddev>58.87</stddev>
<median>753.77</median>
<percentile>755.87</percentile>
</buy>
<sell>
<volume>43601243</volume>
<avg>1017.32</avg>
<max>1697.90</max>
<min>917.94</min>
<stddev>190.56</stddev>
<median>953.01</median>
<percentile>917.94</percentile>
</sell>
</type>
<type id="44">
<buy>
<volume>15005046</volume>
<avg>704.84</avg>
<max>755.88</max>
<min>428.10</min>
<stddev>58.87</stddev>
<median>753.77</median>
<percentile>755.87</percentile>
</buy>
<sell>
<volume>43601243</volume>
<avg>1017.32</avg>
<max>1697.90</max>
<min>17.9</min>
<stddev>190.56</stddev>
<median>953.01</median>
<percentile>917.94</percentile>
</sell>
</type>
</marketstat>
有没有办法可以在标签类型中使用属性id并将其转换为具有相同名称的php变量,并在xml内部赋值?
我的目标是为每个id设置一个变量,并在xml中分配sell-&gt; min的值,以便在我可以调用它进行一些计算之后。
类似的东西:
$17889 = "917.94";
$44 = "17.9";
或我唯一能做的就是使用$ xml-&gt; xpath(&#39; // marketstat / type [@id =&#34; 17889&#34;] / sell / min&#39;) ;每次我想得到它的价值?
答案 0 :(得分:0)
是和否。这是可能的,但是不可能有一个像17889和#17889这样的变量。因为变量名必须以字母或下划线开头。 http://php.net/manual/en/language.variables.basics.php
现在,如果您需要$_17889 = "917.94";
和$_44 = "17.9";
之类的内容,那么在ID前面加上下划线,就可以执行以下操作:
$result = $xml->xpath('//marketstat/type');
while(list( , $node) = each($result)) {
$attr = $node->attributes();
$id = "_" . $attr['id'];
$$id = $node->sell[0]->min[0];
}
答案 1 :(得分:0)
感谢你的建议nl-x我已经能够解决这个问题。
我刚刚&#34;黑客攻击&#34;你的代码在我感觉更舒适的东西,一个正常的foreach循环循环
foreach ($xml->marketstat->type as $type)
{
$typeid = $type[id];
$id = "_" . $typeid;
$$id = $type->sell->min;
}
再次感谢你。