Cara menggunakan PHP untuk melaksanakan fungsi ramalan cuaca

WBOY
Lepaskan: 2023-06-27 20:24:01
asal
1778 orang telah melayarinya

PHP ialah bahasa pengaturcaraan bahagian belakang yang popular dan popular secara meluas dalam bidang pembangunan web. Fungsi ramalan cuaca ialah senario aplikasi web biasa Melaksanakan fungsi ramalan cuaca berdasarkan PHP adalah agak mudah dan mudah difahami. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi ramalan cuaca.

1. Dapatkan API data cuaca

Untuk melaksanakan fungsi ramalan cuaca, anda perlu mendapatkan data cuaca terlebih dahulu. Kami boleh menggunakan API cuaca pihak ketiga untuk mendapatkan data cuaca tepat masa nyata. Pada masa ini, penyedia API cuaca arus perdana di China termasuk "Cuaca Xinzhi" percuma dan "Cuaca Data Pengagregatan" berbayar.

Mengambil Cuaca Xinzhi sebagai contoh, kami mula-mula memohon akaun pembangun di tapak web rasminya dan mendapatkan kunci API percuma. Pendaftaran akaun pembangun adalah percuma dan setiap akaun mempunyai 1,000 panggilan percuma setiap hari secara lalai.

Xinzhi Weather menyediakan pelbagai jenis API, termasuk cuaca masa nyata, cuaca setiap jam, cuaca harian, dsb. Hanya pilih API yang sepadan mengikut keperluan sebenar. Dalam artikel ini, kami memilih untuk menggunakan API cuaca masa nyata untuk mendapatkan data cuaca semasa.

2. Menghuraikan data format JSON

Data cuaca yang dikembalikan oleh Cuaca Xinzhi dikembalikan dalam format JSON. Oleh itu, kita perlu belajar cara menghuraikan data format JSON.

Dalam PHP, anda boleh menggunakan fungsi terbina dalam json_decode() untuk menukar data format JSON kepada objek atau tatasusunan. Contohnya:

$json_string = '{"name":"Peter","age":21,"city":"New York"}';
$data = json_decode($json_string);
echo $data->name;
Salin selepas log masuk

Dalam kod di atas, kami menukar rentetan berformat JSON ke objek $data, dan kemudian mengeluarkan nilai "Peter" bagi atribut namanya.

Jika anda tidak mahu menukar data JSON kepada objek, tetapi ingin menukarnya kepada tatasusunan, anda boleh menetapkan parameter kedua fungsi json_decode() kepada benar. Contohnya:

$json_string = '{"name":"Peter","age":21,"city":"New York"}';
$data = json_decode($json_string, true);
echo $data['name'];
Salin selepas log masuk

3. Gunakan CURL untuk mendapatkan data

Untuk mendapatkan data daripada pelayan API, kita boleh menggunakan perpustakaan CURL dalam PHP. CURL ialah protokol pemindahan fail berdasarkan protokol HTTP, sering digunakan untuk berinteraksi dengan pelayan web, menerima dan menghantar data.

Dalam PHP, anda boleh menggunakan fungsi curl_init() untuk memulakan sesi CURL, dan kemudian gunakan fungsi curl_setopt() untuk menetapkan beberapa parameter, seperti URL permintaan, kaedah permintaan, maklumat pengepala permintaan, data badan permintaan, dsb. Akhir sekali, gunakan fungsi curl_exec() untuk melaksanakan sesi CURL dan mendapatkan data yang dikembalikan oleh pelayan.

Sebagai contoh, kod berikut ialah contoh penggunaan CURL untuk mendapatkan data cuaca masa nyata daripada API Cuaca Xinzhi:

$url = 'https://api.seniverse.com/v3/weather/now.json';
$params = [
    'key' => 'your-api-key', // 替换成你自己的API key
    'location' => '北京',
    'language' => 'zh-Hans',
    'unit' => 'c'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url . '?' . http_build_query($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
echo '当前城市:' . $data['results'][0]['location']['name'] . '<br>';
echo '当前温度:' . $data['results'][0]['now']['temperature'] . '℃<br>';
echo '天气状况:' . $data['results'][0]['now']['text'];
Salin selepas log masuk

Dalam kod di atas, kami menggunakan fungsi http_build_query() untuk menukar tatasusunan parameter kepada pertanyaan rentetan dalam URL, Dengan itu menghantar parameter permintaan ke pelayan API. Kemudian gunakan fungsi json_decode() untuk menghuraikan data format JSON yang dikembalikan oleh pelayan ke dalam tatasusunan, dan akhirnya mengeluarkan maklumat keadaan bandar, suhu dan cuaca.

4. Gunakan sintaks templat untuk mengeluarkan data

Selepas kami memperoleh data cuaca, kami perlu memaparkannya ke halaman hujung hadapan. Untuk mengasingkan data daripada halaman hadapan, kami boleh menggunakan enjin templat PHP untuk mencapai ini.

Enjin templat PHP biasa termasuk Smarty, Blade, Twig, dsb. Di sini kami mengambil Blade sebagai contoh untuk memperkenalkan cara untuk memaparkan data cuaca ke halaman hadapan.

Pertama, kami mentakrifkan pemegang tempat dalam templat Blade untuk memaparkan data cuaca. Contohnya:

<div class="weather">
  <p>当前城市:{{ $city }}</p>
  <p>当前温度:{{ $temperature }}℃</p>
  <p>天气状况:{{ $text }}</p>
</div>
Salin selepas log masuk

Kemudian, kami mengeluarkan data cuaca yang diperolehi kepada pemegang tempat dalam kod PHP. Contohnya:

$data = json_decode($response, true);
$view = new JenssegersBladeBlade(__DIR__.'/views', __DIR__.'/cache');
echo $view->make('weather', [
    'city' => $data['results'][0]['location']['name'],
    'temperature' => $data['results'][0]['now']['temperature'],
    'text' => $data['results'][0]['now']['text'],
])->render();
Salin selepas log masuk

Dalam kod di atas, kami mula-mula menggunakan pembina Blade untuk mencipta objek pandangan $view. Antara parameter pembina, parameter pertama ialah laluan ke folder paparan, dan parameter kedua ialah laluan ke folder cache.

Kemudian, kami menggunakan kaedah make() objek paparan untuk menghantar nama fail paparan dan data yang akan diberikan untuk menjana contoh paparan. Akhir sekali, kandungan paparan dikeluarkan menggunakan kaedah render() bagi contoh paparan.

5. Contoh kod lengkap

Akhir sekali, kami menyepadukan kod di atas ke dalam fail PHP yang lengkap untuk melaksanakan fungsi ramalan cuaca. Kod lengkap adalah seperti berikut:

<?php

require_once 'vendor/autoload.php';

$url = 'https://api.seniverse.com/v3/weather/now.json';
$params = [
    'key' => 'your-api-key', // 替换成你自己的API key
    'location' => '北京',
    'language' => 'zh-Hans',
    'unit' => 'c'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url . '?' . http_build_query($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);

$view = new JenssegersBladeBlade(__DIR__.'/views', __DIR__.'/cache');
echo $view->make('weather', [
    'city' => $data['results'][0]['location']['name'],
    'temperature' => $data['results'][0]['now']['temperature'],
    'text' => $data['results'][0]['now']['text'],
])->render();
Salin selepas log masuk

Dalam kod sampel ini, kami memperkenalkan kebergantungan enjin templat Blade melalui fail vendor/autoload.php. Kami mencipta templat bilah dalam folder pandangan dengan ruang letak untuk memaparkan data cuaca. Akhir sekali, kami menghantar data ke dalam templat melalui objek paparan dan memaparkan halaman ramalan cuaca akhir.

6. Kesimpulan

Menggunakan PHP untuk melaksanakan fungsi ramalan cuaca adalah keperluan pembangunan web yang biasa. Dengan bantuan API cuaca pihak ketiga, kami boleh mendapatkan data cuaca dengan mudah. Kemudian, gunakan perpustakaan CURL untuk mendapatkan data, fungsi json_decode() untuk menghuraikan data, dan enjin templat Blade untuk mengeluarkan data, dan fungsi ramalan cuaca boleh direalisasikan sepenuhnya. Walaupun langkah di atas agak menyusahkan, ia agak mudah untuk dimulakan setelah anda menguasainya.

Atas ialah kandungan terperinci Cara menggunakan PHP untuk melaksanakan fungsi ramalan cuaca. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!