2014-01-18 47 views
0

我試圖在一個函數中執行兩個計算,並將兩個計算的值返回到單獨變量。我想我有一切設置幾乎正確,但我得到一個錯誤消息,我會在代碼後發佈。我可以輕鬆地編寫兩個函數來做我想做的事情,但我寧願將它全部放在一個函數中,因爲函數是通過單擊一個按鈕啓動的。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 

警告:缺少參數2 sg_gc1(),稱爲F:路徑上線55和F中所定義:缺少用於sg_gc1參數2(),稱爲F::路徑上線6 警告PATH在第56行並在第6行的F:PATH中定義:

所以錯誤發生在函數內部,導致我相信函數沒有正確設置兩個參數。如果我要刪除所有g_1參數,它工作得很好,有1個參數。

+0

當你期待2 – 2014-01-18 05:34:44

+0

'return'存在函數時,你只需要調用sg_gc1()(兩次),所以只有第一個函數會運行。 – elclanrs

+0

考慮返回一個數組'返回數組($ gv_1,$ g_1);' – 2014-01-18 05:38:32

回答

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 
} 
+0

工作得很好。非常感謝你= D – Egahtrac

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