Chris Chris - 20 days ago 8
JSON Question

from json array with brackets to variable or mysql

I have this script to display some value from a json file:

<?php
//read the json file contents
$jsondata = file_get_contents('http://website.com/file.json');
//convert json object to php associative array
$data = json_decode($jsondata, true);
//get the weather details
$icon = $data['weather']['icon'];
//Display variables
echo "icon value: $icon"; ?>


the json file is :

{"coord":{"lon":130.84,"lat":-12.46},"weather":[{"id":501,"main":"Rain","description":"moderate rain","icon":"10n"}],"base":"stations","main":{"temp":21,"pressure":1011,"humidity":100,"temp_min":21,"temp_max":21},"visibility":5000,"wind":{"speed":1.5,"deg":130},"clouds":{"all":90},"dt":1479589200,"sys":{"type":1,"id":8209,"message":0.162,"country":"AU","sunrise":1479501624,"sunset":1479547451},"id":2073124,"name":"Darwin","cod":200}


I need to display the icon value (10n), but my script didn't work... Brackets in weather section give me some trouble...

thanks for your help

Answer

you should access this way

$icon = $data['weather'][0]['icon'];
//Display variables
echo "icon value: $icon"; ?>

output

icon value: 10n

var_dump will help you to understand structure of array.this is how $data['weather'] looks like.

//var_dump($data['weather']);
array (size=1)
  0 => // you forget to access this element first?
    array (size=4)
      'id' => int 501
      'main' => string 'Rain' (length=4)
      'description' => string 'moderate rain' (length=13)
      'icon' => string '10n' (length=3)

weather is a array.so you should access nth element first.in this case first index $data['weather'][0] then you can access icon