为什么函数level()
没有运行?我在我的PHP代码中的其他地方运行启动,这是无关紧要的。我写了$LEVEL = level($skillxp)
但是“cho 'efniewfb3idn3uo';
从未打印出来。
这里发生了什么?
function level($xp) {
echo 'efniewfb3idn3uo';
for ($lvl = 1; $lvl < 99; $lvl++) {
if ($xp < experience($lvl)) {
$lvl -= 1;
break;
}
}
return $lvl;
}
function experience($lvl) {
$xp = 0;
for($x = 1; $x < $lvl; $x++) {
$xp += floor($x + 300 * pow(2, ($x / 7)));
}
return floor($xp / 4);
}
function start() {
for ($i = 0; $i < $num_rows; $i++) {
$res = $con->query("SELECT * FROM hiscores LIMIT $i, 1");
$xp = $res->fetch_assoc();
$skillxp = $xp['0'];
$LEVEL = level($skillxp);
echo 'efniewfb3idn3uo';
//return $LEVEL = level($skillxp);
}
}
答案 0 :(得分:3)
您未在$num_rows
之前声明for
,因此您的for
循环永远不会运行。您需要在函数的开头设置它或将其作为参数传递。
为了清楚起见,您有正确的想法,使用echo
进行测试。但是,当您发现类似问题时,您也希望echo
实际上是相关变量。
即使您发布了完整代码的链接,也可以在函数范围之外定义$num_rows
。您需要使用$num_rows
从函数中调用global
,但除非您确定$num_rows
始终相同,否则通常不建议这样做。即便如此,为什么不将它设置在函数中或一直传递它?
有关详细信息,请参阅PHP docs on variable scope.