Search code examples
phparraysjsonsquare-bracket

Remove square brackets from child rows in json


I am trying to display the following data on a website :-

"daily":[{"dt":1593864000,"sunrise":1593834201,"sunset":1593894929,"temp":{"day":18.47,"min":17.83,"max":18.71,"night":17.83,"eve":18.71,"morn":18.47},"feels_like":{"day":16,"night":13.09,"eve":16.54,"morn":16},"pressure":1006,"humidity":77,"dew_point":14.37,"wind_speed":5.51,"wind_deg":244,"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":90,"uvi":7.08}

I extract any of the entries except the ones in the weather section as the code I'm using thinks that the weather data is a separate array.

The section of code relevant to displaying the data is :-

<span class="min-temperature">&nbsp;Minimum Temperature&nbsp;<?php echo $data->daily[0]->clouds; ?>&deg;C</span><br>
  <span class="min-temperature">&nbsp;Pressure&nbsp;<?php echo $data->daily[0]->weather->id; ?></span>

The first line displays data fine but anything within the weather section fails to display anything.

I've seen solutions to remove all the square brackets but its only the brackets surrounding the weather section that is needed.

Thanks in advance


Solution

  • the code below json_decodes and echoes cloud and the weather array. 'hope it helps. please comment. thank you.

    <?php 
    
    $data=json_decode( '{"daily":{"dt":1593864000,"sunrise":1593834201,"sunset":1593894929,"temp":{"day":18.47,"min":17.83,"max":18.71,"night":17.83,"eve":18.71,"morn":18.47},"feels_like":{"day":16,"night":13.09,"eve":16.54,"morn":16},"pressure":1006,"humidity":77,"dew_point":14.37,"wind_speed":5.51,"wind_deg":244,"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":90,"uvi":7.08}}'); # define $data as a stdClass Object
    echo $data->daily->clouds;
    echo "\n";
    
    # below, weather array is converted into a string
    $wa=(array)$data->daily->weather[0];
    foreach($wa as $key=> $val){
        echo $key."=".$val."; ";
    }
    
    ?>
    

    Output:

    90
    id=500; main=Rain; description=light rain; icon=10d; 
    

    (please note this is assumes the edited json data is as originally intended. or please advise. thank you.)