因此對於學校來說,我的任務是創建一個使用3個變量的簡單PHP計算器。我認爲我會使用switch語句爲函數執行所有計算,但在處理操作順序時遇到問題。經過幾個小時和多次嘗試,我不得不承認我很難...有什麼建議嗎?如何製作一個帶有3個變量的PHP計算器
<?php
// function to calculate and return result
function calculate($x, $y, $op) {
// calculate $prod using switch (case) statement
switch($op1) {
case '+':
$prod1 = $x + $y;
break;
case '-':
$prod1 = $x - $y;
break;
case '*':
$prod1 = $x * $y;
break;
case '/':
if ($y == 0) {$prod1 = "∞";}
else {$prod1 = $x/$y;}
// return the result
return $prod1;
}
}
function calculate2($prod1, $z, $op2) {
// calculate $prod2 using switch (case) statement
switch($op2) {
case '+':
$prod2 = $prod1 + $z;
break;
case '-':
$prod2 = $prod1 - $z;
break;
case '*':
$prod2 = $prod1 * $z;
break;
case '/':
if ($z == 0) {$prod2 = "∞";}
else {$prod2 = $prod1/$z;}
}
// return the result
return $prod2;
}
function calculate3($x, $prod2, $op1) {
// calculate $prod using switch (case) statement
switch($op2) {
case '+':
$prod2 = $x + $prod1;
break;
case '-':
$prod2 = $x - $prod1;
}
// return the result
return $prod3;
}
function calculate4($y, $z, $op2) {
// calculate $prod using switch (case) statement
switch($op2) {
case '*':
$prod2 = $y * $z;
break;
case '/':
if ($z == 0) {$prod2 = "∞";}
else {$prod2 = $y/$z;}
}
// return the result
return $prod2;
}
// declare all variables
$x = 0;
$y = 0;
$z = 0;
$prod1 = 0;
$prod2 = 0;
$prod3 = 0;
$op1 = '';
$op2 = '';
// grab the form values from $_GET hash
extract($_GET);
?>
<html>
<head>
<title>PHP Calculator Version 2.12</title>
</head>
<body>
<h3>PHP Calculator (Version 2.12)</h3>
<form method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>">
x = <input type="text" name="x" size="5" value="<?php print $x; ?>" /> op1 =
<select name="op">
<option value="+" <?php if ($op=='+') echo 'selected="selected"';?>>+</option>
<option value="-" <?php if ($op=='-') echo 'selected="selected"';?>>-</option>
<option value="*" <?php if ($op=='*') echo 'selected="selected"';?>>*</option>
<option value="/" <?php if ($op=='/') echo 'selected="selected"';?>>/</option>
</select> y = <input type="text" name="y" size="5" value="<?php print $y; ?>" /> op2 =
<select name="op2">
<option value="+" <?php if ($op2=='+') echo 'selected="selected"';?>>+</option>
<option value="-" <?php if ($op2=='-') echo 'selected="selected"';?>>-</option>
<option value="*" <?php if ($op2=='*') echo 'selected="selected"';?>>*</option>
<option value="/" <?php if ($op2=='/') echo 'selected="selected"';?>>/</option>
</select> z = <input type="text" name="z" size="5" value="<?php print $z; ?>" />
<input type="submit" name="calc" value="Calculate" />
</form>
<?php
if(isset($calc)) {
// check that $x & $y are numeric
if (is_numeric($x) && is_numeric($y) && is_numeric($z)) {
// check PEMDAS
if ($op1 == '*' or '/') {
$prod1 = calculate($x, $y, $op1);
$prod2 = calculate2($prod1, $z, $op2);
}
else if ($op2 == '*' or '/') {
$prod2 = calculate4($y, $z, $op2);
$prod3 = calculate3($x, $prod2, $op1);
}
else
$prod1 = calculate($x, $y, $op1);
$prod2 = calculate2($prod1, $z, $op2);
// print the result
echo "<p>$x $op $y $op2 $z = $prod2 </p>";
}
else {
// unaccepatable values
echo "<p>x, y, and z values are required to be numeric ...
please re-enter values</p>";
}
}
?>
</body>
</html>
計算'的最後一個參數()''是$ op'但你的switch語句中使用'$ op1'。這是行不通的。 'calculate3()'有類似的問題。在放棄之前,你必須解決這些基本問題。 –
好吧,我解決了這個問題 - 但真正的問題是,在我的if/else if語句中,$ prod1在計算()後沒有保存一個值。所以當我嘗試使用$ prod1進行計算時,它等於0 – Philip
我注意到其他錯誤,比如'($ op1 =='*'或'/')',這應該是:'(($ op1 ==' *')或($ op1 =='/'))',還有第二個類似的。在放棄之前先解決所有**錯誤。徹底測試。同時檢查是否所有的'{'在正確的位置用'}'匹配。一套'{'...'}'似乎缺失。 –