我有一个我需要解决的问题。
我正在处理一个看起来像
的表单<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没有足够长时间存储结果?
答案 0 :(得分: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
检查是否设置了这些索引,否则向用户抛出错误
答案 1 :(得分: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;
}
当然你可以做更多的检查,上面只是一个例子......