0

我有一个需要解决的问题。

我正在使用一个看起来有点像的表格

<form action="<?php $_SERVER['PHP_SELF'];?>" method="get">
        <h1>Score</h1>
        <p>Uno
        <input type="number" size="10" name="First" value="{$First}"/>
        </p>

        <p>Dos
        <input type="number" size="10" name="Second" value="{$Second}"/>
        </p>

        <p>Tres
        <input type="number" size="10" name="Third" value="{$Third}"/>
        </p>

        <p>Quattro
        <input type="number" size="10" name="Fourth" value="{$Fourth}"/>
        </p>

        <button type="submit">Hit to submit your inputs</button>
    </form>

而且我还有一些 php 代码来检索这些输入,如下所示

$First = $_GET['First'];
$Second = $_GET['Second']; 
$Third = $_GET['Third'];
$Fourth = $_GET['Fourth'];

然后我打印这些使用简单的输入

echo $First, $Second, $Third, $Fourth;

手头的问题是,我需要先根据这四个变量进行计算,然后再将结果打印出来。

我已经创建了一个函数来做到这一点

function calculateIt(){
$overall = $first+$second+$third+$fourth/2;
return $overall;
}

然后我调用函数

$call = calculateIt();

但是一旦我回显这个调用,它就会返回 0。所以我猜测 $_GET 存储结果的时间不够长?

4

2 回答 2

1

您需要有参数来传递这些变量的值,因为函数内部的变量仅具有该函数的范围,换句话说,函数内部的变量只能在该函数内部使用,除非并且直到您使用global哪个被考虑作为不好的做法,所以有参数并传递值

function calculateIt($first, $second, $third, $fourth){
   $overall = $first+$second+$third+$fourth/2;
   return $overall;
}

所以当你打电话时,你需要在这里传递值

calculateIt(2, 5, 6, 8); //You can replace digits with local variables having numeric values

学习变量范围

旁注:isset用于检查是否设置了这些索引,否则会向用户抛出错误

于 2013-05-05T18:58:34.607 回答
0

您的函数返回一些值($first、$second ...)的计算值,但这些值未在函数中定义。因此它返回 0。(它只是用值为 0 的值进行计算)

function calculateIt(){
$overall = $first+$second+$third+$fourth/2;
return $overall;
}

将值传递给函数,如下所示:

function calculateIt($first = null, $second = null, $third = null, $fourth = null){
//Assigning the values in the declartion of the functions make it easy to
//check wether or not the valeus or ok for calculation
//
if ($first === null || $second === null || $third === null || $fourth === null) {
   return 0; //return 0 when not all values are sent.
}

//Do the calculation now when values are ok, and return calculated value
$overall = $first+$second+$third+$fourth/2;
return $overall;
}

当然你可以做更多的检查,上面只是一个例子......

于 2013-05-05T18:59:13.413 回答