ホームページ >php教程 >php手册 >IP 判定に基づいて地域の天気を問い合わせるために都市名を返します

IP 判定に基づいて地域の天気を問い合わせるために都市名を返します

WBOY
WBOYオリジナル
2016-09-24 09:02:501628ブラウズ

header("content-type:text/html;charset=utf-8");
date_default_timezone_set("Asia/Shanghai");
error_reporting(0);
// IP に基づいて都市を決定します
$ user_ip = $_SERVER['REMOTE_ADDR'];
$url="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=$user_ip";
$address = file_get_contents ($ url);
$address_arr = json_decode($address); // オブジェクトを返すため、配列に変換する必要があります

//上海を例に挙げてみましょう

function object_array($array){
if(is_object($array)){
$array = (array)$array;
}
if(is_array($array)){
foreach($array as $key=> ;$value){
$array[$key] = object_array($value);
}
}
return $array;
}

//この関数を通じて配列に変換します
$address_arr = object_array($address_arr);

// print_r($address_arr);

stdClassオブジェクト
(
[ret] => 1
[開始] => -1
[終了] => -1

[国] => 中国
[省] => 上海
[都市] => 上海
[地区] =>
[isp] =>
[タイプ] =>
[説明] =>
)
配列
(
[ret] => 1
[開始] => -1
[終了] => -1
[国] => 中国
[省] => 上海
[都市] => 上海
[地区] =>
[isp] =>
[タイプ] =>
[説明] =>
)


$city = $address_arr["city"]

//出力は上海で、取得した都市はBaidu Weather APIを通じて現地の天気をクエリできます

$con=file_get_contents("http://api.map.baidu.com/telematics/v3/weather?location=$city&output=json&ak=spmMww7Eoqcmf3FXbnLyDUwL"); //ak 値は Baidu を通じて登録する必要があることに注意してください。インターフェイス、およびアドレスを添付する必要があります:http://lbsyun.baidu.com/apiconsole/key
$con = json_decode($con);

print_r($con);

[zs] => より適切です[ヒント] => スポーツインデックス[des] => 天気は良いので、屋外スポーツをするときは日焼け止めに注意してください。室内での運動がおすすめです。 )[5] => stdClass オブジェクト([タイトル] => 紫外線強度[zs] => 弱い[ヒント] => 紫外線強度指数[des] => 紫外線の強度は弱いので、外出前にSPF12〜15、PA+の日焼け止めを塗ることをお勧めします。
stdClassオブジェクト
(
[エラー] => 0
[ステータス] => 成功
[日付] => 2016-09-23
[結果] => 配列
(
[0] => stdClass オブジェクト
(
[現在の都市] => 上海
[午後25] => 42
[インデックス] => 配列
(
[0] => stdClass オブジェクト
(
[タイトル] => ドレッシング
[zs] => ホット
[tipt] => 服装インデックス
[des] => 天気が暑いので、短いスカート、ショートパンツ、短くて薄いジャケット、Tシャツ、その他の夏用の服装を着用することをお勧めします。
)
[1] => stdClass オブジェクト
(
[タイトル] => 洗車
[zs] => より適切です
[ヒント] => 洗車インデックス
[des] => 次の日は雨が降らず、風も穏やかなので、きれいな車は少なくとも 1 日は長持ちします。
)
[2] => stdClass オブジェクト
(
[タイトル] => 旅行
[zs] => 適切です
[ヒント] => 観光インデックス
[des] => 天気は良いですが、旅行気分には全く影響しません。気温も適度で風もあり旅行には最適です。
)
[3] => stdClass オブジェクト
(
[タイトル] => 寒い
[zs] => 送信量を減らす
[ヒント] => 風邪指数
[des] => 気象条件は適切で、明らかな冷却プロセスはなく、風邪を引く可能性は低いです。
)
[4] => stdClass オブジェクト
(
[タイトル] =>
)
)
[weather_data] => 配列
(
[0] => stdClass オブジェクト
(
【日付】=>9月23日(金)(実時間:26℃)
[dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png
[nightPictureUrl] => http://api.map.baidu.com/images/weather/night/duoyun.png
[天気] => 曇り
[風] => 東風
[気温] => 27 ~ 21℃
)
[1] => stdClass オブジェクト
(
[日付] => 土曜日
[dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png
[nightPictureUrl] => http://api.map.baidu.com/images/weather/night/duoyun.png
[天気] => 曇り
[風] => 東風
[気温] => 28〜23℃
)
[2] => stdClass オブジェクト
(
[日付] => 日曜日
[dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png
[nightPictureUrl] => http://api.map.baidu.com/images/weather/night/yin.png
[天気] => 曇りから曇り
[風] => 東風
[気温] => 28〜23℃
)
[3] => stdClass オブジェクト
(
[日付] => 月曜日
[dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png
[nightPictureUrl] => http://api.map.baidu.com/images/weather/night/yin.png
[天気] => 曇りから曇り
[風] => 北東の風
[気温] => 29 ~ 25℃
)
)
)
)
)

$arr = object_array($con); //配列演算への変換を続行します

$detail = $arr["results"][0]["weather_data"];
$city = $arr["results"][0]["currentCity"];

print_r($detail);

配列
(
[0] => 配列
(
【日付】=>9月23日(金)(実時間:26℃)
[dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png
[nightPictureUrl] => http://api.map.baidu.com/images/weather/night/duoyun.png
[天気] => 曇り
[風] => 東風
[気温] => 27 ~ 21℃
)
[1] => 配列
(
[日付] => 土曜日
[dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png
[nightPictureUrl] => http://api.map.baidu.com/images/weather/night/duoyun.png
[天気] => 曇り
[風] => 東風
[気温] => 28〜23℃
)
[2] => 配列
(
[日付] => 日曜日
[dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png
[nightPictureUrl] => http://api.map.baidu.com/images/weather/night/yin.png
[天気] => 曇りから曇り
[風] => 東風
[気温] => 28〜23℃
)
[3] => 配列
(
[日付] => 月曜日
[dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png
[nightPictureUrl] => http://api.map.baidu.com/images/weather/night/yin.png
[天気] => 曇りから曇り
[風] => 北東の風
[気温] => 29 ~ 25℃
)
)

//気象データを取得し、ニーズに応じて調整します

?>

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。