$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,"countryCode":"PT","name":"Porto","toponymName":"Porto","lat":"41.14961","fcl":"P","fcode":"PPLA"},{"lng":"-8.42005","geonameId":2742032,"countryCode":"PT","name":"Braga","toponymName":"Braga","lat":"41.55032","fcl":"P","fcode":"PPLA"},{"lng":"-8.8882","geonameId":2262963,"countryCode":"PT","name":"Setúbal","toponymName":"Setúbal","lat":"38.5244","fcl":"P","fcode":"PPLA"},{"lng":"-8.13057","geonameId":2264397,"countryCode":"PT","name":"Portugal","toponymName":"Portuguese Republic","lat":"39.6945","fcl":"A","fcode":"PCLI"},
1 回答

慕的地8271018
TA貢獻1796條經驗 獲得超4個贊
對于初學者來說,這是一種非常丑陋的獲取數據的方式,因為您正在對已經是 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
...
- 1 回答
- 0 關注
- 313 瀏覽
添加回答
舉報
0/150
提交
取消