-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)ます。このようにする必要があります。

しかし、それだけではありません。フォームが送信される前にそれらに対処しようとしているため、変数は未定義です。つまり、変数はまだ存在していません。

$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 に答える
0

に変更switch('$calcu')switch($calcu)ます。

@PeterM が述べたように、$calcuスコープ外の変数にアクセスしています。$calcu変数を funに渡すか、配列でcalculate直接アクセスします。$_POST

使用してswitch($_POST['calcu'])ください。

また

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

で楽しみを呼び出しcalculate($n1,$n2, $calcu)ます。

于 2013-02-18T13:32:53.887 に答える