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℃ | |
) | |
) |
//気象データを取得し、ニーズに応じて調整します
?>