php通过首字母查询城市,根据ip判断回来城市名称查询当地天气

根据ip判断返回城市名称查询当地天气

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);  //返回对象,需要转换为数组

//以上海为例

stdClass Object

(

[ret] => 1

[start] => -1

[end] => -1

[country] => 中国

[province] => 上海

[city] => 上海

[district] =>

[isp] =>

[type] =>

[desc] =>

)

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);

Array

(

[ret] => 1

[start] => -1

[end] => -1

[country] => 中国

[province] => 上海

[city] => 上海

[district] =>

[isp] =>

[type] =>

[desc] =>

)

$city = $address_arr["city"];

//输出为上海,获得城市通过百度天气API查询当地天气

$con=file_get_contents("http://api.map.baidu.com/telematics/v3/weather?location=$city&output=json&ak=spmMww7Eoqcmf3FXbnLyDUwL");  //注意ak值需要进入百度接口注册,附上地址:http://lbsyun.baidu.com/apiconsole/key

$con = json_decode($con);

print_r($con);

stdClass Object

(

[error] => 0

[status] => success

[date] => 2016-09-23

[results] => Array

(

[0] => stdClass Object

(

[currentCity] => 上海

[pm25] => 42

[index] => Array

(

[0] => stdClass Object

(

[title] => 穿衣

[zs] => 热

[tipt] => 穿衣指数

[des] => 天气热,建议着短裙、短裤、短薄外套、T恤等夏季服装。

)

[1] => stdClass Object

(

[title] => 洗车

[zs] => 较适宜

[tipt] => 洗车指数

[des] => 较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。

)

[2] => stdClass Object

(

[title] => 旅游

[zs] => 适宜

[tipt] => 旅游指数

[des] => 天气较好,但丝毫不会影响您出行的心情。温度适宜又有微风相伴,适宜旅游。

)

[3] => stdClass Object

(

[title] => 感冒

[zs] => 少发

[tipt] => 感冒指数

[des] => 各项气象条件适宜,无明显降温过程,发生感冒机率较低。

)

[4] => stdClass Object

(

[title] => 运动

[zs] => 较适宜

[tipt] => 运动指数

[des] => 天气较好,户外运动请注意防晒。推荐您进行室内运动。

)

[5] => stdClass Object

(

[title] => 紫外线强度

[zs] => 弱

[tipt] => 紫外线强度指数

[des] => 紫外线强度较弱,建议出门前涂擦SPF在12-15之间、PA+的防晒护肤品。

)

)

[weather_data] => Array

(

[0] => stdClass Object

(

[date] => 周五 09月23日 (实时:26℃)

[dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png

[nightPictureUrl] => http://api.map.baidu.com/images/weather/night/duoyun.png

[weather] => 多云

[wind] => 东风微风

[temperature] => 27 ~ 21℃

)

[1] => stdClass Object

(

[date] => 周六

[dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png

[nightPictureUrl] => http://api.map.baidu.com/images/weather/night/duoyun.png

[weather] => 多云

[wind] => 东风微风

[temperature] => 28 ~ 23℃

)

[2] => stdClass Object

(

[date] => 周日

[dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png

[nightPictureUrl] => http://api.map.baidu.com/images/weather/night/yin.png

[weather] => 多云转阴

[wind] => 东风微风

[temperature] => 28 ~ 23℃

)

[3] => stdClass Object

(

[date] => 周一

[dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png

[nightPictureUrl] => http://api.map.baidu.com/images/weather/night/yin.png

[weather] => 多云转阴

[wind] => 东北风微风

[temperature] => 29 ~ 25℃

)

)

)

)

)

$arr = object_array($con);  //继续转成数组操作

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

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

print_r($detail);

Array

(

[0] => Array

(

[date] => 周五 09月23日 (实时:26℃)

[dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png

[nightPictureUrl] => http://api.map.baidu.com/images/weather/night/duoyun.png

[weather] => 多云

[wind] => 东风微风

[temperature] => 27 ~ 21℃

)

[1] => Array

(

[date] => 周六

[dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png

[nightPictureUrl] => http://api.map.baidu.com/images/weather/night/duoyun.png

[weather] => 多云

[wind] => 东风微风

[temperature] => 28 ~ 23℃

)

[2] => Array

(

[date] => 周日

[dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png

[nightPictureUrl] => http://api.map.baidu.com/images/weather/night/yin.png

[weather] => 多云转阴

[wind] => 东风微风

[temperature] => 28 ~ 23℃

)

[3] => Array

(

[date] => 周一

[dayPictureUrl] => http://api.map.baidu.com/images/weather/day/duoyun.png

[nightPictureUrl] => http://api.map.baidu.com/images/weather/night/yin.png

[weather] => 多云转阴

[wind] => 东北风微风

[temperature] => 29 ~ 25℃

)

)

//获得天气数据,根据自己需求进行调整

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值