Reputation: 13
i have the following code:
echo $response ."<br>";
$yummy=(json_decode($response));
$index_temp=0;
foreach ($yummy as $optie ) {
echo "TEMP = " . $yummy->measures[$index_temp]->value . "<br>";
$index_temp=$index_temp+2;
}
the array with the output is:
{"id":"datalog_transmission","firmwareType":"SenlabH","measures":[{"id":"temperature","timestamp":1565756178419,"value":14.8125},{"id":"humidity","timestamp":1565756178419,"value":89},{"id":"temperature","timestamp":1565756778419,"value":14.6875},{"id":"humidity","timestamp":1565756778419,"value":89},{"id":"temperature","timestamp":1565757378419,"value":14.625},{"id":"humidity","timestamp":1565757378419,"value":90},{"id":"temperature","timestamp":1565757978419,"value":14.625},{"id":"humidity","timestamp":1565757978419,"value":90},{"id":"temperature","timestamp":1565758578419,"value":14.6875},{"id":"humidity","timestamp":1565758578419,"value":90},{"id":"temperature","timestamp":1565759178419,"value":14.6875},{"id":"humidity","timestamp":1565759178419,"value":90},{"id":"temperature","timestamp":1565759778419,"value":14.4375},{"id":"humidity","timestamp":1565759778419,"value":90},{"id":"temperature","timestamp":1565760378419,"value":14.375},{"id":"humidity","timestamp":1565760378419,"value":87},{"id":"temperature","timestamp":1565760978419,"value":14.1875},{"id":"humidity","timestamp":1565760978419,"value":88},{"id":"temperature","timestamp":1565761578419,"value":14.3125},{"id":"humidity","timestamp":1565761578419,"value":88},{"id":"temperature","timestamp":1565762178419,"value":14.5625},{"id":"humidity","timestamp":1565762178419,"value":86},{"id":"temperature","timestamp":1565762778419,"value":14.75},{"id":"humidity","timestamp":1565762778419,"value":83},{"id":"temperature","timestamp":1565763378419,"value":14.875},{"id":"humidity","timestamp":1565763378419,"value":81},{"id":"temperature","timestamp":1565763978419,"value":14.9375},{"id":"humidity","timestamp":1565763978419,"value":81},{"id":"temperature","timestamp":1565764578419,"value":15.125},{"id":"humidity","timestamp":1565764578419,"value":79},{"id":"temperature","timestamp":1565765178419,"value":15.4375},{"id":"humidity","timestamp":1565765178419,"value":78},{"id":"temperature","timestamp":1565765778419,"value":15.6875},{"id":"humidity","timestamp":1565765778419,"value":78},{"id":"temperature","timestamp":1565766378419,"value":15.8125},{"id":"humidity","timestamp":1565766378419,"value":76},{"id":"battery_current_level","timestamp":1565766686419,"value":98}],"parameters":[],"events":[]}
TEMP = 14.8125
TEMP = 14.6875
TEMP = 14.625
TEMP = 14.625
TEMP = 14.6875
the problem is, that the foreach loop always breaks off after 5 passes.
Does anyone know where the problem is?
thank you, markus
Upvotes: 0
Views: 64
Reputation: 5913
You're looping the outer array (id, firmwareType, etc...) which only contains 5 items. It seems like you want to loop the measures property ($yummy->measures
):
foreach ($yummy->measures as $optie ) {
echo "TEMP = " . $optie->value . "<br>";
}
Which will produce the following output:
TEMP = 14.8125
TEMP = 89
TEMP = 14.6875
TEMP = 89
TEMP = 14.625
TEMP = 90
...
As per your comment, to output the 2 id's differently, you can do something like:
foreach ($yummy->measures as $optie ) {
if ($optie->id === "temperature"){
echo "TEMP = " . $optie->value . "<br>";
}
if ($optie->id === "humidity"){
echo "HUM = " . $optie->value . "<br>";
}
}
Which will give you:
TEMP = 14.8125
HUM = 89
TEMP = 14.6875
HUM = 89
TEMP = 14.625
HUM = 90
...
Upvotes: 1