'php foreach loop don't work when I want to traverse json file
My foreach loop dont work. It brings me only 1st item info when i use $arr in my foreach loop but when i change that to $value it gives me nothing :(
<?php
$url = file_get_contents("libs/json/countryBorders.geo.json");
$arr = json_decode($url,true);
foreach($arr as $value) {
echo $value['features'][0]['properties']['name'];
echo $value['features'][0]['properties']['iso_a2'];
};
?>
Here is one of my elements in json file. I want to print all names and iso_a2 codes
{
"type":"FeatureCollection",
"features":[
{
"type":"Feature",
"properties":{
"name":"Bahamas",
"iso_a2":"BS",
"iso_a3":"BHS",
"iso_n3":"044"
},
"geometry":{
"type":"MultiPolygon",
"coordinates":[
[
[
[
-77.53466,
23.75975
],
[
-77.78,
23.71
],
[
-78.03405,
24.28615
],
[
-78.40848,
24.57564
],
[
-78.19087,
25.2103
],
[
-77.89,
25.17
],
[
-77.54,
24.34
],
[
-77.53466,
23.75975
]
]
],
[
[
[
-77.82,
26.58
],
[
-78.91,
26.42
],
[
-78.98,
26.79
],
[
-78.51,
26.87
],
[
-77.85,
26.84
],
[
-77.82,
26.58
]
]
],
[
[
[
-77,
26.59
],
[
-77.17255,
25.87918
],
[
-77.35641,
26.00735
],
[
-77.34,
26.53
],
[
-77.78802,
26.92516
],
[
-77.79,
27.04
],
[
-77,
26.59
]
]
]
]
}
}
Solution 1:[1]
I'm assuming you're parsing a collection of geospatial data and it is one entry you've copied in your question, in which case you'll need a nested loop. Something like the following should do it.
$url = file_get_contents("libs/json/countryBorders.geo.json");
$arr = json_decode($url, true);
foreach($arr as $value) {
foreach($value['features'] as $feature) {
echo $feature['properties']['name'];
echo $feature['properties']['iso_a2'];
}
}
Solution 2:[2]
you can start to iterate your array from features. like that.
$a = $arr['features'];
foreach($a as $value) {
echo $value['properties']['name'];
echo $value['properties']['iso_a2'];
};
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Maik Lowrey |
