サンプル・プログラムの解説:入力処理 |
|
|
まず、天気予報を求める地点の番号を $_GET['id'] で受け取るが、これが空(またはゼロ)の場合は、ユーザー関数 parseForecastMap により、全国地点定義表を配列変数 $ForecastTable に取り込み、コンボボックスで選択させる。 コンボボックスは最初に地域名(area)を選択させ、地域名に応じた都道県名(pref)を、都道府県名に応じた都市名(city)を絞り込んでいく。このため、最低でも3回、本スクリプトが繰り返し実行される。area, pref, city は各々 GET 渡しされる。その度に全国地点定義表を読み込むというオーバーヘッドがあるが、これは、Web アプリではやむを得ないところだろう。 変数 $area, $pref, $city と 配列変数 $ForecastTable から、天気予報を求める地点の番号 $id を取得する。 一方、入力時に予報時期(today, tomorrow, dayaftertomorrow)を指定するわけだが、これを納めた変数 $day と $id が空(またはゼロ)でなければ、ユーザー関数 getResults により、天気予報情報を取得する。
0276: $id = isset($_GET['id']) ? $_GET['id'] : 0; |
|
|
全国地点定義表(RSS 形式)を解釈するユーザー関数 parseForecastMap は、PHP4 では DOM XML 関数群を、PHP5 では SimpleXML 関数群を使って、RSS 形式のデータ構造を $forecasttable に格納する。
0131: /** |
サンプル・プログラムの解説:WebAPI |
|
|
WeatherHacks API から必要な情報を配列に格納するユーザー関数 getResults は、前回までに説明したユーザー関数と同じ働きをしている。 ただし、WeatherHacks API では、image タグなど、要素が入れ子になっているタグがあるので、不本意ながら switch ~ case 文で対応している。 これ以降は、前回までと同じ流れになる。
0189: /** |
|
お詫びと訂正 |
|
|
2009 年 11 月 1 日時点で、サンプル・プログラムが明日の天気を表示しない(16 時以降には表示するようになる)というバグが見つかりました。ご指摘いただいた あんどー 様、ありがとうございます。
調べたところ、WebAPI から渡されるデータの中で、明日の最高気温が空白になっていました(ただし 16 時以降になると正常に記入されている)。最高気温が空白になっていると、その日が存在しないと判断していたのが原因でした。 そこで、最高気温が空白でも天気予報データだけを取り出すようにプログラムを修正し、バージョン 1.1 としてリリースしました。ダウンロードしてご利用ください。 また、WebAPI の提供元には、この問題を報告をしておきました。 |
|
参考書籍 |
|
|
|
参考サイト |
|
|
|
|
|
|
|
|
2007年06月26日 作成
2009年11月01日 更新
Copyright by studio pahoo, (C)2009
(※)本ページはリンクフリーですが、複製・転載時にはご一報ください。 ★本ページへのご意見・ご質問・お便りは、ここをクリックしてください。 |