-1

我目前正在做一些简单的计算器练习,但输出或结果没有显示在这里是我的代码家伙希望你能帮助我:/

    <input type="radio" value= "Addition" name="calcu"> Addition .<br />
    <input type="radio" value= "Subtraction" name="calcu"> Subtraction .<br />
    <input type="radio" value= "Multiplication" name="calcu"> Multiplication .<br />
    <input type="radio" value= "Division" name="calcu"> Division .<br />
<?php
$num1 = $_POST['num1'];
$num2 = $_POST['num2'];
$calcu = $_POST['calcu'];

    function calculate($n1,$n2)
    {
        switch('$calcu')
        {
        case "Addition";
            $compute = $n1 + $n2; 
            break;
        case "Subtraction";
            $compute = $n1 - $n2; 
            break;
        case "Multiplication";
            $compute = $n1 * $n2; 
            break;
        case "Division";
            $compute = $n1 / $n2; 
            break;
        }
    }
echo "$calcu <br /> <br /> 1st Number: $num1 <br /> 2nd Number: $num2 <br /><br />";
echo "Answer is:" .calculate($num1,$num2);
?>
4

3 回答 3

2

这是完整的代码:

<?php
$num1 = $_POST['num1'];
$num2 = $_POST['num2'];
$calcu = $_POST['calcu'];

    function calculate($n1,$n2, $calcu) // set $calcu as parameter
    {
        switch($calcu)
        {
        case "Addition": // here you have to use colons not semi-colons
            $compute = $n1 + $n2; 
            break;
        case "Subtraction":
            $compute = $n1 - $n2; 
            break;
        case "Multiplication":
            $compute = $n1 * $n2; 
            break;
        case "Division":
            $compute = $n1 / $n2; 
            break;
        }
        return $compute; // returning variable
    }
echo "$calcu <br /> <br /> 1st Number: $num1 <br /> 2nd Number: $num2 <br /><br />";
echo "Answer is:" .calculate($num1,$num2, $calcu); // you need to pass $calcu as argument of that function
?>
于 2013-02-18T13:40:25.873 回答
0

更改switch('$calcu')switch($calcu)

正如@PeterM 提到的,您正在访问$calcu超出范围的变量。您可以将$calcu变量传递给 funcalculate或直接通过$_POST数组访问。

使用switch($_POST['calcu']).

或者

function calculate($n1,$n2, $calcu) {
...
}

打电话给乐趣calculate($n1,$n2, $calcu)

于 2013-02-18T13:32:53.887 回答
0

更改switch('$calcu')switch($calcu)。应该是这样的。

但不仅如此。您的变量未定义,因为您试图在提交表单之前解决它们,即它们还不存在。

$num1 = $_POST['num1'];
$num2 = $_POST['num2'];
$calcu = $_POST['calcu'];

你在那里解决他们

echo "$calcu <br /> <br /> 1st Number: $num1 <br /> 2nd Number: $num2 <br /><br />";
echo "Answer is:" .calculate($num1,$num2);

实现这一点的正确方法是检查表单是否已提交:

    <input type="radio" value= "Addition" name="calcu"> Addition .<br />
    <input type="radio" value= "Subtraction" name="calcu"> Subtraction .<br />
    <input type="radio" value= "Multiplication" name="calcu"> Multiplication .<br />
    <input type="radio" value= "Division" name="calcu"> Division .<br />
<?php
if (isset($_POST)){
    $num1 = $_POST['num1'];
    $num2 = $_POST['num2'];
    $calcu = $_POST['calcu'];

        function calculate($n1,$n2)
        {
            switch('$calcu')
            {
            case "Addition";
                $compute = $n1 + $n2; 
                break;
            case "Subtraction";
                $compute = $n1 - $n2; 
                break;
            case "Multiplication";
                $compute = $n1 * $n2; 
                break;
            case "Division";
                $compute = $n1 / $n2; 
                break;
            }
        }
    echo "$calcu <br /> <br /> 1st Number: $num1 <br /> 2nd Number: $num2 <br /><br />";
    echo "Answer is:" .calculate($num1,$num2);

    unset($_POST);
}
?>
于 2013-02-18T13:43:38.497 回答