Note that there are some explanatory texts on larger screens.

plurals
  1. PODynamically Access XML Variable with PHP
    primarykey
    data
    text
    <p>I am attempting to create a PHP query that can access an XML feed using dynamic variables within the query.</p> <pre><code>$xml = new SimpleXMLElement($row['feed_result']); $a = 'Sensor'; $b = 'Condition'; $c = 'LastReading'; echo 'Sensor 1 : '.$xml-&gt;{$a}[0]-&gt;{$b}[6]-&gt;{$c}.'&lt;br /&gt;'; </code></pre> <p>This is working for me, i.e. I am getting the correct value as a response from Sensor 1. However, I am totally stuck in terms of trying to make the [0] and [6] part of the dynamic query. For example, if I change the code like so the query fails and I get no response,</p> <pre><code>$xml = new SimpleXMLElement($row['feed_result']); $a = 'Sensor[0]'; $b = 'Condition[6]'; $c = 'LastReading'; echo 'Sensor 1 : '.$xml-&gt;{$a}-&gt;{$b}-&gt;{$c}.'&lt;br /&gt;'; </code></pre> <p>My question is how can make the section within the square brackets part of the dynamic query? Why won't the query work when the square brackets are part of a variable?</p> <p>The XML looks like this:</p> <pre><code>&lt;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"&gt; &lt;Sensor Name="sensor01" Port="1" Status="0"&gt; &lt;Condition Type="Humidity"&gt; &lt;DateReceived&gt;2013-06-30T17:42:59.237Z&lt;/DateReceived&gt; &lt;LastReading&gt;56.00&lt;/LastReading&gt; &lt;LastReadingDisplay&gt;56.00 %&lt;/LastReadingDisplay&gt; &lt;/Condition&gt; &lt;Condition Type="Humidity"&gt; &lt;DateReceived&gt;2013-06-30T17:45:20.66Z&lt;/DateReceived&gt; &lt;LastReading&gt;57.00&lt;/LastReading&gt; &lt;LastReadingDisplay&gt;57.00 %&lt;/LastReadingDisplay&gt; &lt;/Condition&gt; &lt;Condition Type="Temperature"&gt; &lt;DateReceived&gt;2013-07-27T08:45:38.593Z&lt;/DateReceived&gt; &lt;LastReading&gt;25.20&lt;/LastReading&gt; &lt;LastReadingDisplay&gt;25.20 C&lt;/LastReadingDisplay&gt; &lt;/Condition&gt; &lt;Condition Type="Temperature"&gt; &lt;DateReceived&gt;2013-07-27T08:50:51.36Z&lt;/DateReceived&gt; &lt;LastReading&gt;25.30&lt;/LastReading&gt; &lt;LastReadingDisplay&gt;25.30 C&lt;/LastReadingDisplay&gt; &lt;/Condition&gt; &lt;Condition Type="Temperature"&gt; &lt;DateReceived&gt;2013-07-27T08:56:02.283Z&lt;/DateReceived&gt; &lt;LastReading&gt;25.30&lt;/LastReading&gt; &lt;LastReadingDisplay&gt;25.30 C&lt;/LastReadingDisplay&gt; &lt;/Condition&gt; &lt;Condition Type="Temperature"&gt; &lt;DateReceived&gt;2013-07-27T09:01:14.313Z&lt;/DateReceived&gt; &lt;LastReading&gt;25.30&lt;/LastReading&gt; &lt;LastReadingDisplay&gt;25.30 C&lt;/LastReadingDisplay&gt; &lt;/Condition&gt; &lt;Condition Type="Temperature"&gt; &lt;DateReceived&gt;2013-07-27T09:06:26.797Z&lt;/DateReceived&gt; &lt;LastReading&gt;25.30&lt;/LastReading&gt; &lt;LastReadingDisplay&gt;25.30 C&lt;/LastReadingDisplay&gt; &lt;/Condition&gt; &lt;/Sensor&gt; &lt;Sensor Name="sensor02" Port="2" Status="0"&gt; &lt;Condition Type="Humidity"&gt; &lt;DateReceived&gt;2013-07-27T08:45:38.593Z&lt;/DateReceived&gt; &lt;LastReading&gt;17.00&lt;/LastReading&gt; &lt;LastReadingDisplay&gt;17.00 %&lt;/LastReadingDisplay&gt; &lt;/Condition&gt; &lt;Condition Type="Temperature"&gt; &lt;DateReceived&gt;2013-07-27T08:45:38.593Z&lt;/DateReceived&gt; &lt;LastReading&gt;44.10&lt;/LastReading&gt; &lt;LastReadingDisplay&gt;44.10 C&lt;/LastReadingDisplay&gt; &lt;/Condition&gt; &lt;Condition Type="Humidity"&gt; &lt;DateReceived&gt;2013-07-27T08:50:51.36Z&lt;/DateReceived&gt; &lt;LastReading&gt;18.00&lt;/LastReading&gt; &lt;LastReadingDisplay&gt;18.00 %&lt;/LastReadingDisplay&gt; &lt;/Condition&gt; &lt;Condition Type="Temperature"&gt; &lt;DateReceived&gt;2013-07-27T08:50:51.36Z&lt;/DateReceived&gt; &lt;LastReading&gt;44.40&lt;/LastReading&gt; &lt;LastReadingDisplay&gt;44.40 C&lt;/LastReadingDisplay&gt; &lt;/Condition&gt; &lt;Condition Type="Humidity"&gt; &lt;DateReceived&gt;2013-07-27T08:56:02.283Z&lt;/DateReceived&gt; &lt;LastReading&gt;18.00&lt;/LastReading&gt; &lt;LastReadingDisplay&gt;18.00 %&lt;/LastReadingDisplay&gt; &lt;/Condition&gt; &lt;Condition Type="Temperature"&gt; &lt;DateReceived&gt;2013-07-27T08:56:02.283Z&lt;/DateReceived&gt; &lt;LastReading&gt;44.90&lt;/LastReading&gt; &lt;LastReadingDisplay&gt;44.90 C&lt;/LastReadingDisplay&gt; &lt;/Condition&gt; &lt;Condition Type="Humidity"&gt; &lt;DateReceived&gt;2013-07-27T09:01:14.313Z&lt;/DateReceived&gt; &lt;LastReading&gt;17.00&lt;/LastReading&gt; &lt;LastReadingDisplay&gt;17.00 %&lt;/LastReadingDisplay&gt; &lt;/Condition&gt; &lt;Condition Type="Temperature"&gt; &lt;DateReceived&gt;2013-07-27T09:01:14.313Z&lt;/DateReceived&gt; &lt;LastReading&gt;44.40&lt;/LastReading&gt; &lt;LastReadingDisplay&gt;44.40 C&lt;/LastReadingDisplay&gt; &lt;/Condition&gt; &lt;Condition Type="Humidity"&gt; &lt;DateReceived&gt;2013-07-27T09:06:26.797Z&lt;/DateReceived&gt; &lt;LastReading&gt;16.00&lt;/LastReading&gt; &lt;LastReadingDisplay&gt;16.00 %&lt;/LastReadingDisplay&gt; &lt;/Condition&gt; &lt;Condition Type="Temperature"&gt; &lt;DateReceived&gt;2013-07-27T09:06:26.797Z&lt;/DateReceived&gt; &lt;LastReading&gt;45.80&lt;/LastReading&gt; &lt;LastReadingDisplay&gt;45.80 C&lt;/LastReadingDisplay&gt; &lt;/Condition&gt; &lt;/Sensor&gt; &lt;/CurrentConditions&gt; </code></pre> <p>Thanks</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload