所以基本上我正在做的是创建php脚本,它打印一个表并更新并根据输入到表单中的内容计算值。
所以我有一个单独的HTML文件,其中包含传递3个变量的表单:
$tempStart
$tempEnd
$windSpeed
然后我创建了一个函数,在表的每个字段中使用如下:
function windChillCalc(&$Twc, $Temp, $Wind)
{
$Twc = 13.12 + 0.6215*$Temp - (11.37*(pow($Wind, 0.16))) + (0.3965*$Temp*(pow($Wind, 0.16)));
}
完整的脚本如下:
<?php
function windChillCalc(&$Twc, $Temp, $Wind)
{
$Twc = 13.12 + 0.6215*$Temp - (11.37*(pow($Wind, 0.16))) + (0.3965*$Temp*(pow($Wind, 0.16)));
}
?>
<html>
<head>
<title>Wind Chill Temperature Table</title>
</head>
<?php
extract($_REQUEST);
print "<h1>Wind Chill Temperature Table</h1>";
if(!empty($tempStart) && !empty($tempEnd) && !empty($windSpeed))
{
print "<h3>Air Temperature from: ".$tempStart."°C to ".$tempEnd."°C</h3>";
print "<h3>For Wind Speed from 7 km/h to ".$windSpeed." km/h</h3>";
}
else
print "<h2>Air Temperature START is not numeric</h2><br />";
$tablecolor="white";
$headercolor="#00ffff";
$windcolor="red";
$tempcolor="yellow";
$cTemp=$tempStart;
$cWindSpeed="7";
windChillCalc($Twc,$cTemp,$cWindSpeed);
print "<table border=1><tr>";
print "<th width=275 bgcolor=$headercolor>Wind Speed (km/h)/Air Temp.</th>";
for ($cTemp = $tempStart; $cTemp < $tempEnd; $cTemp+=5){
print "<th width=100 bgcolor=$headercolor>$cTemp</th>";
}
if ($cTemp != $tempEnd){
print "<th width=100 bgcolor=$headercolor>$tempEnd</th></tr>";
$cTemp = $tempStart;
}
for ($cWindSpeed = 7; $cWindSpeed < $windSpeed; $cWindSpeed+=0.5){
print "<tr>";
print "<td align=center bgcolor=$windcolor>$cWindSpeed</td>";
for ($cTemp = $tempStart; $cTemp < $tempEnd; $cTemp+=5) {
print "<td align=center bgcolor=$tempcolor>$Twc</td>";
}
if ($cTemp != $tempEnd){
print "$<td align=center bgcolor=$tempcolor>$Twc</tb></tr>";
$cTemp = $tempStart;
}
}
if ($cWindSpeed != $windSpeed){
print "<td align=center bgcolor=$windcolor>$windSpeed</td>";
for ($cTemp = $tempStart; $cTemp < $tempEnd; $cTemp+=5) {
print "<td align=center bgcolor=$tempcolor>$Twc</td>";
}
if ($cTemp != $tempEnd){
print "$<td align=center bgcolor=$tempcolor>$Twc</tb></tr>";
$cTemp = $tempStart;
}
}
print "</tr>";
print "</table>";
?>
</body>
</html>
最终会发生什么,它会创建一个如下所示的表:
http://i.stack.imgur.com/Iv00i.png
标题和最左边的列是正确的,但它似乎只计算具有相同变量集的黄色单元格。它不会根据标题中的内容更新变量,而是将最左侧的列更新为公式。
所以基本上,每个黄色单元格都使用以下公式计算:
$Wind = 7
$Temp = -5
请帮帮我们!我需要在接下来的几个小时内解决这个问题,这是我最后的希望。谢谢!
答案 0 :(得分:1)
好吧,你只是在循环之前调用你的函数一次,并在每个表格单元格中打印相同的结果。
你应该用你想要打印的实际变量调用你的函数。
我还会从函数中返回计算出的值,而不是通过引用传递它,这使得它更清晰,更符合逻辑(对我来说至少......)。
答案 1 :(得分:1)
你的功能并没有真正起作用。变量$ Twc仅存在于您的函数中,并且只存在一次。您需要使用不同的数据多次运行该函数以获得不同的结果,并且每次都需要获取函数的变量OUT(通过返回)。
function windChillCalc($Twc, $Temp, $Wind){
$Twc = 13.12 + 0.6215*$Temp - (11.37*(pow($Wind, 0.16))) + (0.3965*$Temp*(pow($Wind,0.16)));
return $Twc
}
并且
$Twc = windChillCalc($Twc,$cTemp,$cWindSpeed);
当你需要获得结果时,在你的for循环中。