我试图使用一个类来计算数字并在屏幕上输出它们。用户输入数字,然后在表格上方的屏幕上计算和输出。
我使用post方法将表单结果发布到我正在使用的页面,然后尝试在Fibonacci类中使用它。
数字需要通过课程,然后根据用户输入的内容输出结果。我认为大多数情况都是正确的,但有些东西让我感到高兴,我可以&#39我很清楚。
提前致谢。
这是我的代码:
<?php
class Fibonacci {
//method to check numbers
function checkFibo(){
$n1 = $_POST["n1"];
$n2 = $_POST["n2"];
$output = "";
if($n1!=0 && $n2!=0){
if($n2<$n1){
echo "Your second number must be greater than the first. Try again";
$output="Your second number must be greater than the first. Try again";
}
else if($n1<0 || $n2<0){
echo "Please enter only positive numbers";
$output = "Please enter positive numbers";
}
else if (!(is_numeric($n1)) || !(is_numeric($n2))){
echo "Please only enter positive numbers";
$output="";
}
else{
echo "The result of your request is shown below.";
$output=$fibo->getFibo($n1,$n2);
echo $output;
}
}
else{
echo "<p>Please enter good values</p>";
}
}
// Method to calculate fibonacci
function getFibo($n1 = 0, $n2 = 0) {
$max=$n2 * 100;
$output = "";
while($z<=$max){
$z = $n1 + $n2;
$output.=($z."<br />");
$n1 = $n2;
$n2 = $z;
}
return $output;
}
} // End of Fibonacci class.
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Fibonacci</title>
</head>
<body>
<?php
if (!empty($_POST)){
$fib = new Fibonacci();
echo "hello";
echo $output;
}
echo "<h2> Fibonacci Example </h2>";
echo "<form method=\"post\" action=\"index.php\">";
echo "<table>";
echo "<tr>";
echo "<td>First Number</td>";
echo "<td><input type=\"text\" name=\"n1\"/></td>";
echo "</tr>";
echo "<tr>";
echo "<td>Second Number</td>";
echo "<td><input type=\"text\" name=\"n2\"/></td>";
echo "</tr>";
echo "<tr>";
echo "<td> </td>";
echo "<td><input type=\"submit\" value=\"go!\"/></td>";
echo "</table>";
echo "</form>";
?>
</body>
</html>
答案 0 :(得分:1)
查看代码,看起来变量$ output可能是个问题。
$output.=($z."<br />");
在没有实际声明或设置为开头的情况下,您对$output
进行连接。
所以也许可以在while循环之前尝试$output = ""
。
答案 1 :(得分:1)
我想我看到了这个问题。
$output=$fibo->getFibo($n1,$n2);
我认为应该是:
$output = $this->getFibo($n1,$n2);
要测试,请在getFibo函数中放置一个echo语句,以查看是否有任何打印。您还可以运行$ output的var_dump并查看返回的内容。
还行:
$fib = new Fibonacci();
echo "hello";
echo $output;
应该是:
$fib = new Fibonacci();
echo "hello";
$fib->getFibo();
但你有另一个问题。它创造了一个无限循环。您希望确保$ z总是最终超过$ max,或者设置最大循环次数并突破已达到最大值。