繁体   English   中英

将变量从一个函数传递到另一个函数

[英]Passing variables from one function to another

我在一个函数中设置了一个变量,我试图在另一个函数中使用它。 人们似乎建议不要对函数使用全局变量。

这段代码在我的第一个变量中

 if($this->CheckAndSetupContractHitman($player_data_tab,$player_defence_data_tab)) $winner_exp = $winner_exp + floor($winner_exp*0.4);

 if($this->CheckAndSetupContractHitman($player_data_tab,$player_defence_data_tab)) $bonus_exp = floor($winner_exp*0.2857); 

这是我试图传递给另一个函数的变量$bonus_exp 我应该添加 return $bonus_exp; 在第一个变量的末尾,然后像这样将$bonus_exp作为参数添加到第二个变量中?

function CheckAndSetupContractHitman($player_data_tab,$player_defence_data_tab,$bonus_exp)

也许您正在寻找 通过引用传递

我认为您应该为您的问题考虑另一种解决方案,但通过引用传递比使用全局变量更好。

我会按照你的建议去做,使用return并传递参数。 有一个例外:让它等于空(空)——这样.. 该函数在技术上不需要它作为输入,你可以简单地包括或不包括它,由你决定。

function CheckAndSetupContractHitman($player_data_tab,$player_defence_data_tab,$bonus_exp = ''){
    if ($bonus_exp != ''){
        // Do something
    }
// ....
return bonus_exp;
}

这样设置——如果你调用函数没有$bonus_exp IE

CheckAndSetupContractHitman($player_data_tab,$player_defence_data_tab);

$bonus_exp将被设置为''

但是,如果您设置了它并将其传入......它将被设置为您通过的任何内容。 IE

$bonus_exp = 50;
CheckAndSetupContractHitman($player_data_tab,$player_defence_data_tab,$bonus_exp);

$bonus_exp将作为50传递给函数。

基本上有两种方法可以从函数中获取一些变量。

首先,正如你所说的通过引用传递。

另一个是返回值。 当您返回如下数组时,可能会通过返回获得 1 个以上的值:

if(expression){
    return ["exp" => $exp, "bonus",$bonus];
} else {
   return false;
}    

所以你可以使用像

if($array = topFunction($param1,$param2)){
    $exp = $array["exp"];
    $bonus = $array["bonus"];
}

我更喜欢第二个。 您不应该执行 2 次相同的功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM