PHP:检查是否为空行(“\ n”)

时间:2012-07-05 17:07:34

标签: php is-empty

我正在使用API​​来检索JSON格式的某些温度和位置值。 我在纯文本缓存文件中写输出。

然而,温度站可能无法报告温度值,在这种情况下,我的输出将为空行(\ n)。我想通过显示非报告电台的“N / A”来处理这种情况。

这是一个典型的缓存文件,第一个工作站报告温度和位置,第二个工作站关闭(报告两个空行):

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(Napoli-Posillipo)| N / A°C()| N / A°C(平均)| 12分21秒前

我尝试使用fgets()而不是file(),但是我收到了一个错误:

  

fgets()期望参数1是资源,在[...]中给出的字符串   第54行

我也尝试过使用 if(空($ temperature [foo]))但它不起作用,因为当然 \ n!= empty

任何提示? 提前致谢

2 个答案:

答案 0 :(得分:5)

你的comparisons应该是这样的(注意使用两个等号):

if($temperature[0] == "\n"){ 

您当前的代码正在将"\n"分配给$temperature[1],其评估为true,这就是if条件正在执行的原因。

如果您想使用我建议您使用的empty(),请将您的通话更改为file()

$display = file($cachename, FILE_IGNORE_NEW_LINES);

添加FILE_IGNORE_NEW_LINES标志将告诉函数不要在数组元素的末尾添加换行符("\n")。

答案 1 :(得分:5)

您也可以使用:

if (trim($temperature[1]) == '') {
  // Empty line.
}