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"; ?>
{"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}
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