当前位置:首页 > PHP

php实现天气

2026-02-15 01:49:02PHP

使用PHP获取天气数据

通过PHP获取天气数据通常需要调用第三方天气API。以下是几种常见的方法:

方法一:使用OpenWeatherMap API

注册OpenWeatherMap账号并获取API密钥。使用PHP的file_get_contents或cURL请求数据。

$apiKey = '你的API密钥';
$city = 'Beijing';
$url = "http://api.openweathermap.org/data/2.5/weather?q=$city&appid=$apiKey&units=metric";

$response = file_get_contents($url);
$data = json_decode($response, true);

if ($data) {
    echo "当前温度: " . $data['main']['temp'] . "°C";
    echo "天气状况: " . $data['weather'][0]['description'];
}

方法二:使用心知天气API

心知天气提供中文天气数据服务,适合国内项目。

$apiKey = '你的API密钥';
$city = '北京';
$url = "https://api.seniverse.com/v3/weather/now.json?key=$apiKey&location=$city&language=zh-Hans";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
if (isset($data['results'])) {
    echo "当前温度: " . $data['results'][0]['now']['temperature'] . "°C";
    echo "天气状况: " . $data['results'][0]['now']['text'];
}

方法三:使用和风天气API

和风天气提供丰富的天气数据,包括预报和实时天气。

$apiKey = '你的API密钥';
$city = '101010100'; // 城市ID
$url = "https://devapi.qweather.com/v7/weather/now?location=$city&key=$apiKey";

$response = file_get_contents($url);
$data = json_decode($response, true);

if ($data && $data['code'] == '200') {
    echo "当前温度: " . $data['now']['temp'] . "°C";
    echo "体感温度: " . $data['now']['feelsLike'] . "°C";
}

前端展示天气数据

将获取的天气数据通过HTML和CSS展示给用户。

<div class="weather-card">
    <h3><?php echo $city; ?>天气</h3>
    <div class="temp"><?php echo $temp; ?>°C</div>
    <div class="condition"><?php echo $condition; ?></div>
</div>

<style>
.weather-card {
    border: 1px solid #ddd;
    padding: 20px;
    border-radius: 8px;
    width: 200px;
    text-align: center;
}
.temp {
    font-size: 24px;
    font-weight: bold;
}
.condition {
    color: #666;
}
</style>

缓存天气数据

为避免频繁调用API,可以将天气数据缓存到文件或数据库中。

$cacheFile = 'weather_cache.json';
$cacheTime = 3600; // 1小时

if (file_exists($cacheFile) && time() - filemtime($cacheFile) < $cacheTime) {
    $data = json_decode(file_get_contents($cacheFile), true);
} else {
    $data = fetchWeatherData(); // 调用上述API获取数据
    file_put_contents($cacheFile, json_encode($data));
}

错误处理

添加错误处理机制,确保API请求失败时用户体验不受影响。

php实现天气

try {
    $response = file_get_contents($url);
    if ($response === false) {
        throw new Exception("无法获取天气数据");
    }
    $data = json_decode($response, true);
    if (!$data) {
        throw new Exception("天气数据解析失败");
    }
} catch (Exception $e) {
    echo "天气服务暂时不可用: " . $e->getMessage();
    // 可以显示缓存的旧数据或默认信息
}

通过以上方法,可以在PHP中实现天气数据的获取和展示。选择适合的天气API并根据需求进行定制开发。

标签: 天气php
分享给朋友:

相关文章

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class Tr…

php实现队列

php实现队列

PHP实现队列的方法 队列是一种先进先出(FIFO)的数据结构,PHP可以通过多种方式实现队列功能。 使用数组模拟队列 PHP数组可以模拟队列的基本操作,通过array_push和array_shi…

php实现注册

php实现注册

注册功能实现步骤 数据库准备 创建用户表,包含字段如id、username、password、email等。示例SQL: CREATE TABLE users ( id INT AUTO_I…

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注意…

php 无限分类的实现

php 无限分类的实现

无限分类的实现方法 无限分类通常用于构建树形结构数据,如商品分类、多级菜单等。以下是几种常见的实现方式: 邻接列表模型(Adjacency List) 邻接列表是最简单的实现方式,通过在每个节点中存…

php实现重定向

php实现重定向

使用header函数进行重定向 在PHP中,header()函数是实现重定向的常用方法。通过发送HTTP头信息Location,浏览器会自动跳转到指定URL。需确保在调用header()前没有输出任何…