用PHP动态访问XML变量

用PHP动态访问XML变量,php,xml,square-bracket,Php,Xml,Square Bracket,我试图创建一个PHP查询,该查询可以使用查询中的动态变量访问XML提要 $xml = new SimpleXMLElement($row['feed_result']); $a = 'Sensor'; $b = 'Condition'; $c = 'LastReading'; echo 'Sensor 1 : '.$xml->{$a}[0]->{$b}[6]->{$c}.'<br />'; $xml=newsimplexmlement($row['feed\u

我试图创建一个PHP查询,该查询可以使用查询中的动态变量访问XML提要

$xml = new SimpleXMLElement($row['feed_result']); 
$a = 'Sensor';
$b = 'Condition';
$c = 'LastReading';
echo 'Sensor 1 : '.$xml->{$a}[0]->{$b}[6]->{$c}.'<br />';
$xml=newsimplexmlement($row['feed\u result']);
$a=‘传感器’;
$b=‘条件’;
$c='LastReading';
回声“传感器1:”.$xml->{$a}[0]->{$b}[6]->{$c}.
这对我有效,即我从传感器1获得正确的响应值。但是,我完全无法将[0]和[6]作为动态查询的一部分。例如,如果我像这样更改代码,那么查询失败,并且没有得到响应

$xml = new SimpleXMLElement($row['feed_result']); 
$a = 'Sensor[0]';
$b = 'Condition[6]';
$c = 'LastReading';
echo 'Sensor 1 : '.$xml->{$a}->{$b}->{$c}.'<br />';
$xml=newsimplexmlement($row['feed\u result']);
$a='传感器[0]';
$b='条件[6]';
$c='LastReading';
回声“传感器1:”.$xml->{$a}->{$b}->{$c}.
我的问题是如何使方括号内的部分成为动态查询的一部分?当方括号是变量的一部分时,为什么查询不起作用

XML如下所示:

<CurrentConditions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="" Status="0" Latitude="0.0" Longitude="0.0" Units="Metric">
<Sensor Name="sensor01" Port="1" Status="0">
<Condition Type="Humidity">
<DateReceived>2013-06-30T17:42:59.237Z</DateReceived>
<LastReading>56.00</LastReading>
<LastReadingDisplay>56.00 %</LastReadingDisplay>
</Condition>
<Condition Type="Humidity">
<DateReceived>2013-06-30T17:45:20.66Z</DateReceived>
<LastReading>57.00</LastReading>
<LastReadingDisplay>57.00 %</LastReadingDisplay>
</Condition>
<Condition Type="Temperature">
<DateReceived>2013-07-27T08:45:38.593Z</DateReceived>
<LastReading>25.20</LastReading>
<LastReadingDisplay>25.20 C</LastReadingDisplay>
</Condition>
<Condition Type="Temperature">
<DateReceived>2013-07-27T08:50:51.36Z</DateReceived>
<LastReading>25.30</LastReading>
<LastReadingDisplay>25.30 C</LastReadingDisplay>
</Condition>
<Condition Type="Temperature">
<DateReceived>2013-07-27T08:56:02.283Z</DateReceived>
<LastReading>25.30</LastReading>
<LastReadingDisplay>25.30 C</LastReadingDisplay>
</Condition>
<Condition Type="Temperature">
<DateReceived>2013-07-27T09:01:14.313Z</DateReceived>
<LastReading>25.30</LastReading>
<LastReadingDisplay>25.30 C</LastReadingDisplay>
</Condition>
<Condition Type="Temperature">
<DateReceived>2013-07-27T09:06:26.797Z</DateReceived>
<LastReading>25.30</LastReading>
<LastReadingDisplay>25.30 C</LastReadingDisplay>
</Condition>
</Sensor>
<Sensor Name="sensor02" Port="2" Status="0">
<Condition Type="Humidity">
<DateReceived>2013-07-27T08:45:38.593Z</DateReceived>
<LastReading>17.00</LastReading>
<LastReadingDisplay>17.00 %</LastReadingDisplay>
</Condition>
<Condition Type="Temperature">
<DateReceived>2013-07-27T08:45:38.593Z</DateReceived>
<LastReading>44.10</LastReading>
<LastReadingDisplay>44.10 C</LastReadingDisplay>
</Condition>
<Condition Type="Humidity">
<DateReceived>2013-07-27T08:50:51.36Z</DateReceived>
<LastReading>18.00</LastReading>
<LastReadingDisplay>18.00 %</LastReadingDisplay>
</Condition>
<Condition Type="Temperature">
<DateReceived>2013-07-27T08:50:51.36Z</DateReceived>
<LastReading>44.40</LastReading>
<LastReadingDisplay>44.40 C</LastReadingDisplay>
</Condition>
<Condition Type="Humidity">
<DateReceived>2013-07-27T08:56:02.283Z</DateReceived>
<LastReading>18.00</LastReading>
<LastReadingDisplay>18.00 %</LastReadingDisplay>
</Condition>
<Condition Type="Temperature">
<DateReceived>2013-07-27T08:56:02.283Z</DateReceived>
<LastReading>44.90</LastReading>
<LastReadingDisplay>44.90 C</LastReadingDisplay>
</Condition>
<Condition Type="Humidity">
<DateReceived>2013-07-27T09:01:14.313Z</DateReceived>
<LastReading>17.00</LastReading>
<LastReadingDisplay>17.00 %</LastReadingDisplay>
</Condition>
<Condition Type="Temperature">
<DateReceived>2013-07-27T09:01:14.313Z</DateReceived>
<LastReading>44.40</LastReading>
<LastReadingDisplay>44.40 C</LastReadingDisplay>
</Condition>
<Condition Type="Humidity">
<DateReceived>2013-07-27T09:06:26.797Z</DateReceived>
<LastReading>16.00</LastReading>
<LastReadingDisplay>16.00 %</LastReadingDisplay>
</Condition>
<Condition Type="Temperature">
<DateReceived>2013-07-27T09:06:26.797Z</DateReceived>
<LastReading>45.80</LastReading>
<LastReadingDisplay>45.80 C</LastReadingDisplay>
</Condition>
</Sensor>
</CurrentConditions>

2013-06-30T17:42:59.237Z
56
56%
2013-06-30T17:45:20.66Z
57
57%
2013-07-27T08:45:38.593Z
25.20
25.20 C
2013-07-27T08:50:51.36Z
25.30
25.30摄氏度
2013-07-27T08:56:02.283Z
25.30
25.30摄氏度
2013-07-27T09:01:14.313Z
25.30
25.30摄氏度
2013-07-27T09:06:26.797Z
25.30
25.30摄氏度
2013-07-27T08:45:38.593Z
17
17%
2013-07-27T08:45:38.593Z
44.10
44.10 C
2013-07-27T08:50:51.36Z
18
18%
2013-07-27T08:50:51.36Z
44.40
44.40摄氏度
2013-07-27T08:56:02.283Z
18
18%
2013-07-27T08:56:02.283Z
44.90
44.90摄氏度
2013-07-27T09:01:14.313Z
17
17%
2013-07-27T09:01:14.313Z
44.40
44.40摄氏度
2013-07-27T09:06:26.797Z
16
16%
2013-07-27T09:06:26.797Z
45.80
45.80摄氏度

谢谢

您正在寻找这样的数组索引变量吗

<?php

$xml = new SimpleXMLElement($row['feed_result']); 
$a = 'Sensor';
$aindex = 0; // <------
$b = 'Condition';
$bindex = 6; // <------
$c = 'LastReading';
echo 'Sensor 1 : '.$xml->{$a}[$aindex]->{$b}[$bindex]->{$c}.'<br />';

?>

您正在寻找这样的数组索引变量吗

<?php

$xml = new SimpleXMLElement($row['feed_result']); 
$a = 'Sensor';
$aindex = 0; // <------
$b = 'Condition';
$bindex = 6; // <------
$c = 'LastReading';
echo 'Sensor 1 : '.$xml->{$a}[$aindex]->{$b}[$bindex]->{$c}.'<br />';

?>


请通过编辑您的问题发布您的XML。请通过编辑您的问题发布您的XML。是的,非常感谢。这正是我想要实现的。谢谢你的帮助。是的,非常感谢。这正是我想要实现的。谢谢你的帮助。