JSON 形式で温度と場所の値を取得するために API を使用しています。出力をプレーンテキストのキャッシュファイルに書き込んでいます。
ただし、温度ステーションが温度値の報告に失敗する場合があり、その場合、出力は空の行 (\n) になります。非通報局には「N/A」と表示することで対応したい。
以下は、最初のステーションが温度と位置を報告し、2 番目のステーションがシャットダウンした (2 つの空の行を報告する) 典型的なキャッシュファイルです。
27.6
Napoli-Posillipo
(an empty line)
(an empty line)
私は試しました:
$display = file($cachename);
$temperature[0] = $display[0];
$location[0] = $display[1];
$temperature[1] = $display[2];
$location[1] = $display[3];
$temp_avg = (($temperature[0]+$temperature[1])/2); //average temperature
if($temperature[0] = "\n"){ //if weather station is not reporting data
$temperature[0] = "N/A";
$temp_avg = "N/A";
}
if($temperature[1] = "\n"){
$temperature[1] = "N/A";
$temp_avg = "N/A";
}
echo "<div id='temperature'><b>".$temperature[0]."</b>°C (".$location[0].") | ";
echo "<b>".$temperature[1]."</b>°C (".$location[1].") | ";
echo "<b>".$temp_avg."</b>°C (avg) | ".$minutes."m".$secondsleft."s ago</div>";
ただし、最初のステーションが温度値を正しく報告している場合でも、両方のステーションで「N/A」が表示され続けます。
N/A°C (ナポリ-ポジリポ) | 該当なし () | N/A°C (平均) | 12 分 21 秒前
file() の代わりに fgets() を試してみましたが、エラーが発生しました:
fgets() は、パラメーター 1 がリソースであると想定し、54 行目の [...] で指定された文字列
if(empty($temperature[foo]))も使用してみましたが、もちろん\n != emptyのため、機能しませんでした。
ヒントはありますか?前もって感謝します