• 技术文章 >后端开发 >php教程

    使用PHP怎么查询天气预报

    青灯夜游青灯夜游2022-10-20 16:26:08转载1340

    PHP查询天气预报的步骤:1、开通天气预报接口服务,获取接口请求Key;2、调用接口API发出请求查询城市天气;3、获取返回的天气相关信息,语法“$data = $result['result'];”,具体根据业务实际逻辑调整修改信息并输出即可。

    php入门到就业线上直播课:进入学习

    本教程操作环境:windows7系统、PHP8.1版、DELL G3电脑

    怎么利用PHP查未来多少天的天气预报?下面本篇文章就来带大家聊聊基于PHP的免费天气预报接口查询,希望对大家有所帮助。

    1、开通接口

    天气预报接口服务使用的聚合数据提供的免费接口,每天可以100次免费调用。可以通过 https://www.juhe.cn/docs/api/id/73?s=cpphpcn 注册及开通。

    2、通过PHP发起城市天气查询

    <?php
    // 请求的接口URL
    $apiUrl = 'http://apis.juhe.cn/simpleWeather/query';
    // 请求参数
    $params = [
        'city' => '苏州', // 要查询的城市
        'key' => '您申请的接口调用Key'
    ];
    $paramsString = http_build_query($params);
    
    // 发起接口网络请求
    $response = juheHttpRequest($apiUrl, $paramsString , 1);
    $result = json_decode($response, true);
    if ($result) {
        $errorCode = $result['error_code'];
        if ($errorCode == 0) {
            // 获取返回的天气相关信息,具体根据业务实际逻辑调整修改
            $data = $result['result'];
    
            // 打印当前实况天气信息
            echo "当前城市:{$data["city"]}".PHP_EOL;
            echo "当前温度:{$data["realtime"]["temperature"]}".PHP_EOL;
            echo "当前湿度:{$data["realtime"]["humidity"]}".PHP_EOL;
            echo "当前天气:{$data["realtime"]["info"]}".PHP_EOL;
            echo "当前风向:{$data["realtime"]["direct"]}".PHP_EOL;
            echo "当前风力:{$data["realtime"]["power"]}".PHP_EOL;
            echo "当前空气质量:{$data["realtime"]["aqi"]}".PHP_EOL;
    
        } else {
            // 请求异常
            echo "请求异常:{$errorCode}_{$result["reason"]}".PHP_EOL;
        }
    } else {
        // 可能网络异常等问题,无法正常获得相应内容,业务逻辑可自行修改
        echo "请求异常".PHP_EOL;
    }
    
    /**
     * 发起网络请求函数
     * @param $url 请求的URL
     * @param bool $params 请求的参数内容
     * @param int $ispost 是否POST请求
     * @return bool|string 返回内容
     */
    function juheHttpRequest($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, 3);
        curl_setopt($ch, CURLOPT_TIMEOUT, 12);
        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;
    }

    3、通过PHP发起生活指数查询

    // 请求的接口URL
    $apiUrl = 'http://apis.juhe.cn/simpleWeather/life';
    // 请求参数
    $params = [
        'city' => '苏州', // 要查询的城市
        'key' => '您申请的接口调用Key'
    ];
    $paramsString = http_build_query($params);
    
    // 发起接口网络请求
    $response = juheHttpRequest($apiUrl, $paramsString , 1);
    $result = json_decode($response, true);
    if ($result) {
        $errorCode = $result['error_code'];
        if ($errorCode == 0) {
            // 获取返回的天气相关信息,具体根据业务实际逻辑调整修改
            $data = $result['result']['life'];
    
            // 打印当前实况天气信息
            echo "空调指数:{$data['kongtiao']['v']},{$data['kongtiao']['des']}".PHP_EOL;
            echo "过敏指数:{$data['guomin']['v']},{$data['guomin']['des']}".PHP_EOL;
            echo "舒适度指数:{$data['shushidu']['v']},{$data['shushidu']['des']}".PHP_EOL;
            echo "穿衣指数:{$data['chuanyi']['v']},{$data['chuanyi']['des']}".PHP_EOL;
            echo "钓鱼指数:{$data['diaoyu']['v']},{$data['diaoyu']['des']}".PHP_EOL;
            echo "感冒指数:{$data['ganmao']['v']},{$data['ganmao']['des']}".PHP_EOL;
            echo "紫外线指数:{$data['ziwaixian']['v']},{$data['ziwaixian']['des']}".PHP_EOL;
            echo "洗车指数:{$data['xiche']['v']},{$data['xiche']['des']}".PHP_EOL;
            echo "运动指数:{$data['yundong']['v']},{$data['yundong']['des']}".PHP_EOL;
            echo "带伞指数:{$data['daisan']['v']},{$data['daisan']['des']}".PHP_EOL;
            // .......
    
        } else {
            // 请求异常
            echo "请求异常:{$errorCode}_{$result["reason"]}".PHP_EOL;
        }
    } else {
        // 可能网络异常等问题,无法正常获得相应内容,业务逻辑可自行修改
        echo "请求异常".PHP_EOL;
    }

    推荐学习:《PHP视频教程

    以上就是使用PHP怎么查询天气预报的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:sdk.cn,如有侵犯,请联系admin@php.cn删除

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:php
    上一篇:快速在Ubuntu或CentOS上安装PHP的方法 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• PHP实现非法词汇过滤(算法分析)• php怎么替换字符串的第一位字符• php怎么检查数组是否有某个键值对• php怎么将对象转为索引数组• php怎么检测子字符串是否存在
    1/1

    PHP中文网