<?php
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℃
  )
   
  )

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

?>

根据ip判断返回城市名称查询当地天气的更多相关文章

  1. ip获取所在城市名称等信息接口,及函数

    函数: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ...

  2. 通过jquery 获取用户当前所在的城市名称和IP地址

    下面这段JS代码是通过jquery 结合新浪IP地址库和QQip地址库接口获取用户当前所在的城市(省份)名称. 用户当前IP地址等数据.其中当前IP是通过 QQip地址库接口获取,其他数据都是通过 新 ...

  3. python中通过客户端IP拿到所在城市和当地天气信息—附带项目案例

    熟悉老一代QQ的小伙伴可能都知道,很早以前的QQ,鼠标滑到头像的位置,你的位置和IP会在详情页显示,那么这个是如何做到的呢?下面我们就来玩一玩这个东西 首先,需求分析: 1.拿到客户端IP 2.通过I ...

  4. 基于thinkphp实现根据用户ip判断地理位置并提供对应天气信息的应用

    https://blog.csdn.net/MyCodeDream/article/details/46706469 我们都知道,在很多的网站都提供了给用户提供天气预报的功能,有时会发现,用户即使不输 ...

  5. ip获取到城市

    <?phpfunction GetIP() {    if ($_SERVER["HTTP_X_FORWARDED_FOR"])        $ip = $_SERVER[ ...

  6. C# 解析百度天气数据,Rss解析百度新闻以及根据IP获取所在城市

    百度天气 接口地址:http://api.map.baidu.com/telematics/v3/weather?location=上海&output=json&ak=hXWAgbsC ...

  7. 获取客户端IP地址定位城市信息

    获取客户端IP地址定位城市信息 1.首先获取客户端的IP地址 function getIPaddress(){ $IPaddress=''; if (isset($_SERVER)){ if (iss ...

  8. 获取ip地址及城市信息

    大家好,今天给大家分享的是一个简单的知识获取登录用户的ip地址及城市信息,lz是一个小白,如果有哪些错误的地方  欢迎大家指出 东西很简单,直接上代码 [HttpPost] public string ...

  9. uniapp|微信小程序获取当前城市名称--逆地址解析

    六年代码两茫茫,不思量,自难忘 6年资深前端主管一枚,只分享技术干货,项目实战经验 关注博主不迷路~ 问题 uniapp开发的小程序需要获取当前城市名称 解决步骤 看文档 当然是看uniapp文档,我 ...

随机推荐

  1. 【.net 深呼吸】细说CodeDom(6):方法参数

    本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...

  2. redux-amrc:用更少的代码发起异步 action

    很多人说 Redux 代码多,开发效率低.其实 Redux 是可以灵活使用以及拓展的,经过充分定制的 Redux 其实写不了几行代码.今天先介绍一个很好用的 Redux 拓展-- redux-amrc ...

  3. React 入门教程

    React 起源于Facebook内部项目,是一个用来构建用户界面的 javascript 库,相当于MVC架构中的V层框架,与市面上其他框架不同的是,React 把每一个组件当成了一个状态机,组件内 ...

  4. CSS HTML元素布局及Display属性

    本篇文章主要介绍HTML的内联元素.块级元素的分类与布局,以及dispaly属性对布局的影响. 目录 1. HTML 元素分类:介绍内联元素.块级元素的分类. 2. HTML 元素布局:介绍内联元素. ...

  5. 从零开始编写自己的C#框架(24)——测试

    导航 1.前言 2.不堪回首的开发往事 3.测试推动开发的成长——将Bug消灭在自测中 4.关于软件测试 5.制定测试计划 6.编写测试用例 7.执行测试用例 8.发现并提交Bug 9.开发人员修复B ...

  6. 谱聚类(spectral clustering)原理总结

    谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也 ...

  7. mac下安装及配置tomcat

    mac下的软件不像windows下的程序那样写注册表,对于tomcat的安装来说,在mac下是名符其实的绿色软件,具体操作如下: 1.到 apache官方主页 下载完整 tar.gz文件包.(没有专门 ...

  8. dagger2系列之依赖方式dependencies、包含方式(从属方式)SubComponent

    本篇是实战文章,从代码的角度分析这两种方式.本文参考自下列文章: http://www.jianshu.com/p/1d42d2e6f4a5 http://www.jianshu.com/p/94d4 ...

  9. [原]Paste.deploy 与 WSGI, keystone 小记

    Paste.deploy 与 WSGI, keystone 小记 名词解释: Paste.deploy 是一个WSGI工具包,用于更方便的管理WSGI应用, 可以通过配置文件,将WSGI应用加载起来. ...

  10. 内存映射文件MemoryMappedFile使用

    参考资料: http://blog.csdn.net/bitfan/article/details/4438458 所谓内存映射文件,其实就是在内存中开辟出一块存放数据的专用区域,这区域往往与硬盘上特 ...