我正在尝试从rome2rio(API http://www.rome2rio.com/documentation/search)中提取数据。它们使我有可能从其服务器上的JSON或XML文件中获取详细信息。 JSON输出如下所示:
{
"agencies":
[{
"code": "SWISSRAILWAYS",
"name": "Swiss Railways (SBB/CFF/FFS)",
"url": "http://www.sbb.ch"
"iconPath": "/logos/trains/ch.png",
"iconSize": "27,23",
"iconOffset": "0,0"
]},
"routes":
[{
"name": "Train",
"distance": 95.92,
"duration": 56,
"stops":
[{
"name": "Bern",
"pos": "46.94926,7.43883",
"kind": "station"
},{
"name": "Zürich HB",
"pos": "47.37819,8.54019",
"kind": "station"
}],
"segments":
[{
"kind": "train",
"subkind": "train",
"isMajor": 1,
"distance": 95.92,
"duration": 56,
"sName": "Bern",
"sPos": "46.94938,7.43927",
"tName": "Zürich HB",
"tPos": "47.37819,8.54019",
"path": "{wp}Gu{kl@wb@uVo|AqiDyoBhUibDeiDc`AsmDaxBqk@wwA...",
"indicativePrice":{
"price":45,
"currency":"USD",
"isFreeTransfer":0,
"nativePrice":40,
"nativeCurrency":"CHF"
},
"itineraries":
[{
"legs":
[{
"url": "http://fahrplan.sbb.ch/bin/query.exe/en...",
"hops":
[{
"distance": 95.92,
"duration": 56,
"sName": "Bern",
"sPos": "46.94938,7.43927",
"tName": "Zürich HB",
"tPos": "47.37819,8.54019",
"frequency": 400,
"indicativePrice":{
"price":45,
"currency":"USD",
"isFreeTransfer":0,
"nativePrice":40,
"nativeCurrency":"CHF"
},
"lines":
[{
"name": "",
"vehicle": "train",
"agency": "SWISSRAILWAYS",
"frequency": 400,
"duration": 57,
}]
}]
}]
}]
}]
}]
}]
}
我想通过PHP提取'segments'数据并使用以下代码:
<?php
$url = 'http://free.rome2rio.com/api/1.2/json/Search?key=vwiC3pvW&oName=Germany&dName=Yemen';
$content = file_get_contents($url);
$json = json_decode($content, true);
?>
<html>
<head>
<style>
section {height:500px; width:1000px; color:red;}
</style>
</head>
<body>
<section>
<?php
foreach($json as $i){
echo "$i[segments]</br>";
}
?>
</section>
</body>
<
当我执行代码时,我得到了这个结果:
Notice: Undefined index: segments in C:\xampp\htdocs\worldmap\test.php on line 21
Notice: Undefined index: segments in C:\xampp\htdocs\worldmap\test.php on line 21
Notice: Undefined index: segments in C:\xampp\htdocs\worldmap\test.php on line 21
Notice: Undefined index: segments in C:\xampp\htdocs\worldmap\test.php on line 21
Notice: Undefined index: segments in C:\xampp\htdocs\worldmap\test.php on line 21
Notice: Undefined index: segments in C:\xampp\htdocs\worldmap\test.php on line 21
提前感谢您提供任何帮助!
答案 0 :(得分:1)
我不知道&#34;段&#34;索引在哪里..但你可以试试这个:
<?php foreach($json as $segment => $i):?>
<h3><?php echo $segment ?></h3>
<?php foreach($i as $index => $value): ?>
<p><?php echo $index.": ".$value ?></p>
<?php endforeach; ?>
<?php endforeach; ?>
或者你可以使用Itinaretor ......我认为这是一个更好的解决方案..
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($json));
foreach($iterator as $key => $value) {
echo "<p>$key => $value</p>";
}