3

所以基本上我正在做的是创建 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."&degC to ".$tempEnd."&degC</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

请帮帮我!我需要在接下来的几个小时内解决这个问题,这是我最后的希望。谢谢!

4

2 回答 2

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 循环中。

推荐阅读。

于 2013-01-28T23:22:37.593 回答
1

好吧,您只在循环之前调用您的函数一次,并在每个表格单元格中打印相同的结果。

您应该在要打印的任何地方使用实际变量调用您的函数。

我还将从函数返回计算值,而不是通过引用传递它,这使得它更清晰、更合乎逻辑(至少对我来说......)。

于 2013-01-28T23:05:10.110 回答