Php 将变量从一个函数传递到另一个函数
我在一个函数中设置了一个变量,我正试图在另一个函数中使用它。人们似乎建议不要在函数中使用globals 这段代码在我的第一个变量中Php 将变量从一个函数传递到另一个函数,php,function,variables,Php,Function,Variables,我在一个函数中设置了一个变量,我正试图在另一个函数中使用它。人们似乎建议不要在函数中使用globals 这段代码在我的第一个变量中 if($this->CheckAndSetupContractHitman($player_data_tab,$player_defence_data_tab)) $winner_exp = $winner_exp + floor($winner_exp*0.4); if($this->CheckAndSetupContractHitman($pl
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\u exp
。我是否应该添加退货$bonus\u exp在第一个变量的末尾添加code>,然后将$bonus\u exp
作为第二个变量的参数,如下所示
function CheckAndSetupContractHitman($player_data_tab,$player_defence_data_tab,$bonus_exp)
也许你在找
我认为您应该为您的问题想出另一种解决方案,但通过引用传递比使用全局传递更好。我会按照您的建议,使用返回并传递参数。只有一个例外:让它等于零(空)——那样。。该函数在技术上不需要它作为输入,您可以根据自己的判断是否包含它
function CheckAndSetupContractHitman($player_data_tab,$player_defence_data_tab,$bonus_exp = ''){
if ($bonus_exp != ''){
// Do something
}
// ....
return bonus_exp;
}
这样设置--如果调用函数而不调用$bonus\u exp
IE
CheckAndSetupContractHitman($player_data_tab,$player_defence_data_tab);
$bonus\u exp
将设置为'
但是如果你已经设置好了,并且通过了。。。它将被设置为您通过的任何内容。即
$bonus_exp = 50;
CheckAndSetupContractHitman($player_data_tab,$player_defence_data_tab,$bonus_exp);
$bonus\u exp
将作为50
传递到函数中。基本上有两种方法可以从函数中获取一些变量
首先,正如你所说,通过参考传递
另一个是返回值。当您返回如下数组时,可以使用return获取多个值:
if(expression){
return ["exp" => $exp, "bonus",$bonus];
} else {
return false;
}
所以你可以用like
if($array = topFunction($param1,$param2)){
$exp = $array["exp"];
$bonus = $array["bonus"];
}
我更喜欢第二个。你不应该执行两次相同的函数。我不确定我是否正确理解你的要求,但是作为一般规则,如果你有函数example1()
并且你从函数example2()
中调用它,你想在example2()中使用的中的任何东西
。如果要在example2()
中使用example1()
中的任何内容,请从内部返回example2()
当然也有例外,例如通过引用传递,但这是一般的经验法则。您也有全局变量,但正如您所说的,不推荐使用全局变量。我不确定我是否知道这样做的原因,但我认为这是为了防止您在某个地方意外地覆盖它。作为参数传递并返回也是更好的形式。@Chipster但是。注:这里有两个链接:首先,理解“变量”和“函数”之间的区别。然后,因为你似乎在一个对象内部,你会想理解什么是“属性”和“方法”。答案可能在于使用类属性。好的,谢谢你的帮助。我认为返回会导致函数结束,对吗?所以我必须使用return$bonus\u exp;在我的第一个函数结束时,如何将其从函数中取出?现在有几种方法可供选择,而不是返回数组