【发布时间】:2018-04-17 16:46:16
【问题描述】:
我有以下代码,并希望显示一条消息“上麋鹿河休闲活动 -”,然后根据大坝的当前流出量显示“安全、谨慎或危险”。我以为我有这个工作,但当前流出超过 3000,这应该是危险的,但它仍然显示安全。
$url2 = "http://r7j8v4x4.map2.ssl.hwcdn.net/TFH_R.xml";
$xml2 = simplexml_load_file($url2);
?>
<style>
.discharge-Safe {
font-size: 20px;
background: green;
color: white;
}
.discharge-Caution {
font-size: 20px;
background: yellow;
color: white;
}
.discharge-Dangerous {
font-size: 20px;
background: red;
color: white;
}
</style>
<h4><?php
$discharge = (int) $xml2->RESULTSET[2]->ROW[48]->AVG_HOURLY_DISCHARGE;
$discharge_range = [
'Safe' => [ 'min_range' => 0, 'max_range' => 500 ],
'Caution' => [ 'min_range' => 501, 'max_range' => 799 ],
'Dangerous' => [ 'min_range' => 800, 'max_range' => 9000 ]
];
$discharge_class = function ($value) use ($discharge_range) {
foreach ($discharge_range as $key => $range) {
if (filter_var($value, FILTER_VALIDATE_INT, ['options' => $range]) !== false) {
return $key;
}
}
};
echo '<span class="discharge-'.$discharge_class($discharge).'">Upper Elk River Recreational Activity - '.$discharge_class($discharge).'</span>';
?></h4>
我做了这个改变:
// last item
$discharge = $xml2->RESULTSET[1]->ROW[count($xml2->RESULTSET[1]->ROW)-1]->AVG_HOURLY_DISCHARGE;
$discharge_range = [
'safe' => [ 'min_range' => 0, 'max_range' => 499 ],
'caution' => [ 'min_range' => 500, 'max_range' => 799 ],
'dangerous' => [ 'min_range' => 800, 'max_range' => 10000 ]
];
$discharge_class = function ($value) use ($discharge_range) {
foreach ($discharge_range as $key => $range) {
if (filter_var($value, FILTER_VALIDATE_INT, ['options' => $range]) !== false) {
return $key;
}
}
};
echo '<span class="discharge-'.$discharge_class($discharge).'">Upper Elk River Recreational Activity-'.$discharge.'</span>';
?></h4
现在我得到了 Upper Elk River Recreational Activity- 3,845,这是正确的流出数字,但没有颜色,根据范围,这应该是红色。
如果我把回显改回原来的代码:
echo '<span class="discharge-'.$discharge_class($discharge).'">Upper Elk River Recreational Activity - '.$discharge_class($discharge).'</span>';
?></h4>
我得到了 Upper Elk River Recreational Activity - ,没有范围名称?
【问题讨论】:
-
代码对我来说没问题,我猜您的
$discharge变量不包含您认为的内容。 -
FWIW,我会删除
use ($discharge_range)并将其声明放在函数中,没有必要用它弄脏你的全局范围。 -
这是 XML 的链接,[link] r7j8v4x4.map2.ssl.hwcdn.net/TFH_R.xml 我需要第二个结果集,最后一行,所以第 48 行,以及平均每小时排放量,所以 RESULTSET[2]->ROW [48]->AVG_HOURLY_DISCHARGE。我更改了行号,没关系,它总是显示安全。我尝试将名称从安全更改为其他名称,并在浏览器中更改。因此,无论出于何种原因,它都没有读取其他两个范围。
标签: php xml xml-parsing