php 具有功能和开关的php基本计算器,但结果是

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/14937524/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 08:14:17  来源:igfitidea点击:

php basic calculator with function and switch but result is

phpfunctioncalculator

提问by Christine Javier

i am currently doing some simple calculator for a practice but it the output or result is not showing here is my code guys hope you can help me :/

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

    <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);
?>

回答by Muhammad Talha Akbar

Here is complete code:

这是完整的代码:

<?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
?>

回答by Alex

Change switch('$calcu')to switch($calcu). It should be this way.

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

But not only that. Your variables are undefined because you are trying to address them before form is submited, i.e they don't exist yet.

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

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

And there you address them

在那里你解决他们

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

The right way to implement this is to check if form was submitted:

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

    <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);
}
?>

回答by Justin John

Change switch('$calcu')to switch($calcu).

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

As @PeterM mentioned, you are accessing variable $calcuout of scope. Either you pass the $calcuvariable to fun calculateor access directly by $_POSTarray.

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

use switch($_POST['calcu']).

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

OR

或者

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

Call the fun by calculate($n1,$n2, $calcu).

通过调用乐趣calculate($n1,$n2, $calcu)