我有一些这样的变量:
$barbarian = 7;
$archer = 7;
$giant = 7;
和这样的功能:
function army($troopData,$troop,$thing){
if(isset($troop) && $troopData+1 == ${"$thing"}){
$troopData++;
$text = "<span class='army-icon active top-lvl $thing-icon'><span>$troopData</span></span>";
}elseif(isset($troop)){
$troopData++;
$text = "<span class='army-icon active $thing-icon'><span>$troopData</span></span>";
}else{
$text = "<span class='army-icon $thing-icon'><span></span></span>";
}
return $text;
}
如果出现以下情况,请注意第一个: if(isset($troop) && $troopData+1 == ${"$thing"}){
该函数的调用方式如下: army($troopslvl4000000,$troops4000000, "barbarian"); army($troopslvl4000001,$troops4000001, "archer");
函数中的最后一个参数名为$ thing。
因此,我需要在if的第一行检查是否:
1)$troop
已设置。2)$troopData+1 == $barbarian
(或$archer
第二个函数调用的所有内容)
但这不起作用。它总是使用elseif或else。第一个永远不会被召唤...
您可以使用类似以下的构造:
$s1 = "somevar";
$$s1 = "test";
echo $somevar; // will output: test
这在您的代码中:
function army($troopData,$troop,$thing){
global $barbarian;
global $archer;
global $giant;
if(isset($troop) && $troopData+1 == $$thing){
...
}
请注意,您应该启用$barbarian
对函数内部的etc.变量的访问!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句