我正在尝试在一个函数中执行两个计算,并将两个计算的值都返回到单独的变量。我想我的设置几乎正确,但我收到一条错误消息,我将在代码后发布。我可以轻松编写两个函数来完成我想要的操作,但我宁愿将它全部放在一个函数中,因为只需单击一个按钮即可启动该函数。
function sg_gc1($gv_1, $g_1) {
$gv_1 = $gv_1 - 1;
Return $gv_1;
$g_1 = $g_1 + 20;
Return $g_1;
}
// This second part in my code is mostly irrelevant to my question but it helps paint the picture.
if (isset($_POST['Calculate']) && ($_SESSION['gv_1'] != 0) ) {
$_SESSION['gv_1'] = sg_gc1($_SESSION['gv_1']); // line 55
$_SESSION['g_1'] = sg_gc1($_SESSION['g_1']); // line 56
} // This statement assigns the new calculated values to my existing session variables and it worked just fine before i tried adding in the second argument
警告:缺少sg_gc1()的参数2,在第55行的F:PATH中调用,在第6行的F:PATH中定义 警告:缺少sg_gc1()的参数2,在第56行的F:PATH中调用,在第6行的F:PATH中定义
因此错误发生在函数内部,这使我相信函数没有正确设置为两个参数。如果我要删除所有g_1参数,它可以正常使用1个参数。
答案 0 :(得分:0)
这样调用函数,因为你的函数接受两个参数而你只传递一个。
sg_gc1($_SESSION['gv_1'],$_SESSION['g_1']);
并且在功能上你必须像下面那样返回。你的第二次回归永远不会被执行。
function sg_gc1($gv_1, $g_1) {
$gv_1 = $gv_1 - 1;
$g_1 = $g_1 + 20;
return array($gv_1,$g_1);
}
调用功能部分
if (isset($_POST['Calculate']) && ($_SESSION['gv_1'] != 0) ) {
list($_SESSION['gv_1'],$_SESSION['g_1']) = sg_gc1($_SESSION['gv_1'],$_SESSION['g_1']);
echo $_SESSION['gv_1']."--".$_SESSION['g_1'];//for checking purpose
}
答案 1 :(得分:0)
您无法在函数中返回两个变量。改为返回一个数组:
function sg_gc1($gv_1, $g_1) {
$gv_1 = $gv_1 - 1;
$g_1 = $g_1 + 20;
return array($gv_1, $g_1);
}
现在要检索值,您只需访问数组索引:
$arr = sg_gc1($_SESSION['gv_1'], $_SESSION['g_1']);
$gv_1 = $arr[0];
$g_1 = $arr[1];
或者您可以使用list
构造在一行中执行此操作:
list($gv_1, $g_1) = sg_gc1($_SESSION['gv_1'], $_SESSION['g_1']);