亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP調用全國天氣預報數據接口查詢天氣示例

2024-05-05 00:06:50
字體:
來源:轉載
供稿:網友

本文實例講述了PHP調用全國天氣預報數據接口查詢天氣。分享給大家供大家參考,具體如下:

基于PHP的聚合數據全國天氣預報API服務請求的代碼樣例

本代碼示例是基于PHP的聚合數據全國天氣預報API服務請求的代碼樣例,使用前你需要:

①:通過https://www.juhe.cn/docs/api/id/39 申請一個天氣預報API的appkey

樣例代碼包含了獲取支持城市列表、根據城市獲取天氣預報、根據IP地址請求天氣預報、根據GPS坐標請求天氣、城市3小時天氣預報的實現。示例代碼主要是解析一些常用字段,如需要完整或其他未包含的字段,可以自行參考官方的接口,進行修改。

首先:引入封裝好的天氣調用類

header('Content-type:text/html;charset=utf-8');include 'class.juhe.weather.php'; //引入天氣請求類//接口基本信息配置$appkey = '**********'; //您申請的天氣查詢appkey$weather = new weather($appkey);

一、獲取支持的城市列表

由于支持的城市列表基本不會這么變化,大家可以獲取到列表后內置到自己的應用中,就不用每次都去請求API。

$citysResult = $weather->getCitys();if($citysResult['error_code'] == 0){  //以下可根據實際業務需求,自行改寫  //////////////////////////////////////////////////////////////////////  $citys = $citysResult['result'];  foreach($citys as $ckey =>$c){    echo "ID:".$c['id'].",省份:".$c['province'].",城市:".$c['city'].",區域:".$c['district']."<br>";  }}else{  //以下可根據實際業務需求,自行改寫  //////////////////////////////////////////////////////////////////////  echo $citysResult['error_code'].":".$citysResult['reason'];}

二、根據城市/ID獲取天氣預報

通過城市的名稱或城市的ID來獲取天氣預報,城市id就是獲取城市支持列表中返回的字段ID

$cityWeatherResult = $weather->getWeather('蘇州');if($cityWeatherResult['error_code'] == 0){  //以下可根據實際業務需求,自行改寫  //////////////////////////////////////////////////////////////////////  $data = $cityWeatherResult['result'];  echo "=======當前天氣實況=======<br>";  echo "溫度:".$data['sk']['temp']."  ";  echo "風向:".$data['sk']['wind_direction']."  (".$data['sk']['wind_strength'].")";  echo "濕度:".$data['sk']['humidity']."  ";  echo "<br><br>";  echo "=======未來幾天天氣預報=======<br>";  foreach($data['future'] as $wkey =>$f){    echo "日期:".$f['date']." ".$f['week']." ".$f['weather']." ".$f['temperature']."<br>";  }  echo "<br><br>";  echo "=======相關天氣指數=======<br>";  echo "穿衣指數:".$data['today']['dressing_index']." , ".$data['today']['dressing_advice']."<br>";  echo "紫外線強度:".$data['today']['uv_index']."<br>";  echo "舒適指數:".$data['today']['comfort_index']."<br>";  echo "洗車指數:".$data['today']['wash_index'];  echo "<br><br>";}else{  echo $cityWeatherRe}

三、根據用戶的IP地址請求對應的天氣預報

通過用戶的IP地址獲取用戶所在地的天氣預報,由于IP地址解析可能會有誤差,所以有時定位到的城市不一定是用戶實際的所在地。

$ipWeatherResult = $weather->getWeatherByIP('58.215.154.128');if($ipWeatherResult['error_code'] == 0){  //以下可根據實際業務需求,自行改寫  //////////////////////////////////////////////////////////////////////  $data = $ipWeatherResult['result'];  echo "=======當前城市=======<br>";  echo $data['today']['city'];  echo "<br><br>";  echo "=======當前天氣實況=======<br>";  echo "溫度:".$data['sk']['temp']."  ";  echo "風向:".$data['sk']['wind_direction']."  (".$data['sk']['wind_strength'].")";  echo "濕度:".$data['sk']['humidity']."  ";  echo "<br><br>";  echo "=======未來幾天天氣預報=======<br>";  foreach($data['future'] as $wkey =>$f){    echo "日期:".$f['date']." ".$f['week']." ".$f['weather']." ".$f['temperature']."<br>";  }  echo "<br><br>";  echo "=======相關天氣指數=======<br>";  echo "穿衣指數:".$data['today']['dressing_index']." , ".$data['today']['dressing_advice']."<br>";  echo "紫外線強度:".$data['today']['uv_index']."<br>";  echo "舒適指數:".$data['today']['comfort_index']."<br>";  echo "洗車指數:".$data['today']['wash_index'];  echo "<br><br>";}else{  echo $ipWeatherResult['error_code'].":".$ipWeatherResult['reason'];}

四、根據GPS坐標來獲取對應地區的天氣

無論通過二、三、四獲取的天氣預報,因為聚合格式都是統一的,所以解析的流程是一致的,所以沒有額外的操作,只是傳參上有點的差異。

$geoWeatherResult = $weather->getWeatherByGeo(116.401394,39.916042);if($geoWeatherResult['error_code'] == 0){  //以下可根據實際業務需求,自行改寫  //////////////////////////////////////////////////////////////////////  $data = $geoWeatherResult['result'];  echo "=======當前城市=======<br>";  echo $data['today']['city'];  echo "<br><br>";  echo "=======當前天氣實況=======<br>";  echo "溫度:".$data['sk']['temp']."  ";  echo "風向:".$data['sk']['wind_direction']."  (".$data['sk']['wind_strength'].")";  echo "濕度:".$data['sk']['humidity']."  ";  echo "<br><br>";  echo "=======未來幾天天氣預報=======<br>";  foreach($data['future'] as $wkey =>$f){    echo "日期:".$f['date']." ".$f['week']." ".$f['weather']." ".$f['temperature']."<br>";  }  echo "<br><br>";  echo "=======相關天氣指數=======<br>";  echo "穿衣指數:".$data['today']['dressing_index']." , ".$data['today']['dressing_advice']."<br>";  echo "紫外線強度:".$data['today']['uv_index']."<br>";  echo "舒適指數:".$data['today']['comfort_index']."<br>";  echo "洗車指數:".$data['today']['wash_index'];  echo "<br><br>";}else{  echo $geoWeatherResult['error_code'].":".$geoWeatherResult['reason'];}

五、獲取城市三小時預報

就是城市每3小時的天氣情況

$forecastResult = $weather->getForecast("蘇州");if($forecastResult['error_code'] == 0){  //以下可根據實際業務需求,自行改寫  //////////////////////////////////////////////////////////////////////  $data = $forecastResult['result'];  foreach($data as $key => $d){    echo "日期:".$d['date']." (".$d['sh']."點-".$d['eh']."點) ".$d['weather']." ".$d['temp1']."~".$d["temp2"]."<br>";  }}else{  //以下可根據實際業務需求,自行改寫  //////////////////////////////////////////////////////////////////////  echo $forecastResult['error_code'].":".$forecastResult['reason'];}

通過上面的示例代碼,大家應該對如果調用聚合數據天氣預報API有了一個大體的了解。

最后放上class.juhe.weather.php完整代碼:

<?php// +----------------------------------------------------------------------// | JuhePHP [ NO ZUO NO DIE ]// +----------------------------------------------------------------------// | Copyright (c) 2010-2015 http://juhe.cn All rights reserved.// +----------------------------------------------------------------------// | Author: Juhedata <info@juhe.cn-->// +----------------------------------------------------------------------//----------------------------------// 聚合數據天氣預報接口請求類//----------------------------------class weather{  private $appkey = false; //申請的聚合天氣預報APPKEY  private $cityUrl = 'http://v.juhe.cn/weather/citys'; //城市列表API URL  private $weatherUrl = 'http://v.juhe.cn/weather/index'; //根據城市請求天氣API URL  private $weatherIPUrl = 'http://v.juhe.cn/weather/ip'; //根據IP地址請求天氣API URL  private $weatherGeoUrl = 'http://v.juhe.cn/weather/geo'; //根據GPS坐標獲取天氣API URL  private $forecast3hUrl = 'http://v.juhe.cn/weather/forecast3h'; //獲取城市天氣3小時預報API URL  public function __construct($appkey){    $this->appkey = $appkey;  }  /**   * 獲取天氣預報支持城市列表   * @return array   */  public function getCitys(){    $params = 'key='.$this->appkey;    $content = $this->juhecurl($this->cityUrl,$params);    return $this->_returnArray($content);  }  /**   * 根據城市名稱/ID獲取詳細天氣預報   * @param string $city [城市名稱/ID]   * @return array   */  public function getWeather($city){    $paramsArray = array(      'key'  => $this->appkey,      'cityname' => $city,      'format'  => 2    );    $params = http_build_query($paramsArray);    $content = $this->juhecurl($this->weatherUrl,$params);    return $this->_returnArray($content);  }  /**   * 根據IP地址獲取當地天氣預報   * @param string $ip [IP地址]   * @return array   */  public function getWeatherByIP($ip){     $paramsArray = array(      'key'  => $this->appkey,      'ip' => $ip,      'format'  => 2    );    $params = http_build_query($paramsArray);    $content = $this->juhecurl($this->weatherIPUrl,$params);    return $this->_returnArray($content);  }  /**   * 根據GPS坐標獲取當地的天氣預報   * @param string $lon [經度]   * @param string $lat [緯度]   * @return array   */  public function getWeatherByGeo($lon,$lat){    $paramsArray = array(      'key'  => $this->appkey,      'lon' => $lon,      'lat'  => $lat,      'format'  => 2    );    $params = http_build_query($paramsArray);    $content = $this->juhecurl($this->weatherGeoUrl,$params);    return $this->_returnArray($content);  }  /**   * 獲取城市三小時預報   * @param string $city [城市名稱]   * @return array   */  public function getForecast($city){    $paramsArray = array(      'key'  => $this->appkey,      'cityname' => $city,      'format'  => 2    );    $params = http_build_query($paramsArray);    $content = $this->juhecurl($this->forecast3hUrl,$params);    return $this->_returnArray($content);  }  /**   * 將JSON內容轉為數據,并返回   * @param string $content [內容]   * @return array   */  public function _returnArray($content){    return json_decode($content,true);  }  /**   * 請求接口返回內容   * @param string $url [請求的URL地址]   * @param string $params [請求的參數]   * @param int $ipost [是否采用POST形式]   * @return string   */  public function juhecurl($url,$params=false,$ispost=0){    $httpInfo = array();    $ch = curl_init();    curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );    curl_setopt( $ch, CURLOPT_USERAGENT , 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36' );    curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 30 );    curl_setopt( $ch, CURLOPT_TIMEOUT , 30);    curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );    if( $ispost )    {      curl_setopt( $ch , CURLOPT_POST , true );      curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );      curl_setopt( $ch , CURLOPT_URL , $url );    }    else    {      if($params){        curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );      }else{        curl_setopt( $ch , CURLOPT_URL , $url);      }    }    $response = curl_exec( $ch );    if ($response === FALSE) {      //echo "cURL Error: " . curl_error($ch);      return false;    }    $httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE );    $httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) );    curl_close( $ch );    return $response;  }}

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品国偷自产在线99热| 精品久久久久国产| 欧美日韩成人在线观看| 欧美猛交免费看| 亚洲视频精品在线| 久久久久久欧美| 日韩av在线精品| 久久国产加勒比精品无码| 亚洲乱码国产乱码精品精| 国产美女扒开尿口久久久| 国产日本欧美一区二区三区在线| 麻豆国产精品va在线观看不卡| 欧美极品欧美精品欧美视频| 麻豆精品精华液| 九九热这里只有精品免费看| 国产成人福利视频| 久热精品视频在线| 国产亚洲欧美日韩一区二区| 欧美伊久线香蕉线新在线| 欧美性xxxx极品hd满灌| 亚洲自拍偷拍福利| 久久精品国产欧美亚洲人人爽| 欧美成年人视频网站欧美| 亚洲色图校园春色| 欧美在线观看视频| 91国产精品视频在线| 欧美xxxx做受欧美| 日韩国产精品一区| 亚洲a区在线视频| 久久综合久久八八| 午夜美女久久久久爽久久| 欧美高清第一页| 日日骚久久av| 日本sm极度另类视频| 亚洲一区二区黄| 欧美性xxxx18| 亚洲影院色无极综合| 91成人性视频| 国产一区二区三区在线看| 九九久久久久久久久激情| 亚洲视频在线观看免费| 91在线视频九色| 日韩午夜在线视频| 欧美丰满少妇xxxx| 国模极品一区二区三区| 不用播放器成人网| 国产噜噜噜噜久久久久久久久| 欧美日韩性视频在线| 日韩综合视频在线观看| 久久久久久网址| 日韩在线观看成人| 成人免费观看49www在线观看| 青青a在线精品免费观看| 中文字幕日韩欧美在线| 亚洲美女免费精品视频在线观看| 国产第一区电影| 伊人久久久久久久久久久| 色香阁99久久精品久久久| 最新日韩中文字幕| 亚洲福利视频久久| 久久精品国产欧美激情| 中文字幕免费国产精品| 精品久久久91| 欧美日韩激情小视频| 亚洲美女精品久久| 欧美日韩国产精品| 日本精品一区二区三区在线| 亚洲精品国精品久久99热一| 狠狠色噜噜狠狠狠狠97| 久久国产精品久久精品| 亚洲国产精品人久久电影| 国产精品99久久99久久久二8| 亚洲国产精品美女| 久久夜色精品国产欧美乱| 精品久久香蕉国产线看观看亚洲| 亚洲天堂男人天堂女人天堂| 色樱桃影院亚洲精品影院| 亚洲欧美精品伊人久久| 成人网在线观看| 欧美三级免费观看| 亚洲三级免费看| 欧美黄色三级网站| 日韩欧美成人免费视频| 5278欧美一区二区三区| 国产美女直播视频一区| 欧美成人激情视频免费观看| 欧美性猛交99久久久久99按摩| 国产91在线播放九色快色| 久久中国妇女中文字幕| 亚洲国产精品久久久久秋霞不卡| 久久亚洲国产成人| 国产欧美日韩中文字幕| 日韩欧美国产黄色| 欧美日韩国产123| 国产精品伦子伦免费视频| 欧美日韩成人在线播放| 国产精品一区二区女厕厕| 91精品视频在线看| 亚洲日本成人女熟在线观看| 亚洲色图美腿丝袜| 久久久精品欧美| 一区二区成人av| 中文字幕亚洲欧美一区二区三区| 九九精品在线视频| 国内偷自视频区视频综合| 欧美日韩成人黄色| 精品国内自产拍在线观看| 国产一区二区三区在线免费观看| 97视频在线观看免费高清完整版在线观看| 成人www视频在线观看| 亚洲欧美日韩精品久久亚洲区| 久久久之久亚州精品露出| 久久人人97超碰精品888| 国产成人精品一区二区三区| 97色在线观看| 欧美天天综合色影久久精品| 久久天堂av综合合色| 中文日韩在线观看| 亚洲色图偷窥自拍| 日韩欧美国产成人| 久久久久久噜噜噜久久久精品| 亚洲欧洲国产一区| 久久综合网hezyo| 中文字幕亚洲色图| 欧美午夜www高清视频| 在线播放亚洲激情| 亚洲国产精品久久91精品| 国产视频综合在线| 久久精品国产一区二区三区| 国内精品美女av在线播放| 夜夜嗨av色一区二区不卡| 亚洲福利小视频| 91久久久久久国产精品| 日韩在线免费观看视频| 亚洲一区二区三区成人在线视频精品| 亚洲无限乱码一二三四麻| 亚洲精品第一页| 国产精品电影久久久久电影网| 日韩精品在线电影| 亚洲国产精品女人久久久| 2019av中文字幕| 欧美性xxxxx| 精品亚洲va在线va天堂资源站| 国产热re99久久6国产精品| 欧美激情国产日韩精品一区18| 欧美怡春院一区二区三区| 日韩视频免费大全中文字幕| 亚洲三级黄色在线观看| 一二美女精品欧洲| 97国产成人精品视频| 国产成人自拍视频在线观看| 国产精品久久久久久网站| zzijzzij亚洲日本成熟少妇| 国产区亚洲区欧美区| 91av在线播放| 日韩av在线高清| 日本精品视频在线播放| 国产精品香蕉av| 亚洲精品在线观看www| 亚洲欧美另类在线观看| 国产精品一二三视频| 亚洲色图15p| 国产999在线| 日韩欧美国产一区二区|