如何解决地理名称api循环并获取城市名称
$jsonfile = file_get_contents("http://api.geonames.org/searchJSON?username=ksuhiyp&country=pt&maxRows=1000&style=SHORT");
$jsondata = json_encode($jsonfile);
$cities = explode(',',$jsondata);
foreach($cities as $key => $value){
echo $value;
}
我如何只获取数组中包含的所有城市名称(例如,里斯本,波尔图,阿威罗...)?
以下是数组的示例:
{"totalResultsCount":37305,"geonames":[{"lng":"-9.13333","geonameId":2267057,"countryCode":"PT","name":"Lisbon","toponymName":"Lisbon","lat":"38.71667","fcl":"P","fcode":"PPLC"},{"lng":"-8.61099","geonameId":2735943,"name":"Porto","toponymName":"Porto","lat":"41.14961","fcode":"PPLA"},{"lng":"-8.42005","geonameId":2742032,"name":"Braga","toponymName":"Braga","lat":"41.55032",{"lng":"-8.8882","geonameId":2262963,"name":"Setúbal","toponymName":"Setúbal","lat":"38.5244",{"lng":"-8.13057","geonameId":2264397,"name":"Portugal","toponymName":"Portuguese Republic","lat":"39.6945","fcl":"A","fcode":"PCLI"},
解决方法
对于初学者来说,这是获取数据的一种非常丑陋的方式,因为您正在编码已经是json的json数据,然后仅循环遍历产生的整齐的字符串。
这将为您提供一个仅包含名称的数组:
$jsonfile = file_get_contents("http://api.geonames.org/searchJSON?username=ksuhiyp&country=pt&maxRows=1000&style=SHORT");
$geodat = json_decode($jsonfile,true);
$names = array();
foreach($geodat['geonames'] as $geoname) {
$names[] = $geoname['name'];
}
print_r($names);
示例输出:
Array (
[0] => Lisbon
[1] => Porto
[2] => Braga
[3] => Setúbal
[4] => Portugal
[5] => Coimbra
[6] => Funchal
[7] => Amadora
[8] => Queluz
[9] => Lisbon metropolitan area
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。