PHP函数 - 将参数返回到多个变量

时间:2014-01-18 05:30:02

标签: php

我正在尝试在一个函数中执行两个计算,并将两个计算的值都返回到单独的变量。我想我的设置几乎正确,但我收到一条错误消息,我将在代码后发布。我可以轻松编写两个函数来完成我想要的操作,但我宁愿将它全部放在一个函数中,因为只需单击一个按钮即可启动该函数。

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个参数。

2 个答案:

答案 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']);