PHP方法未执行

时间:2013-10-30 01:09:28

标签: php

为什么函数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);
}
}

1 个答案:

答案 0 :(得分:3)

您未在$num_rows之前声明for,因此您的for循环永远不会运行。您需要在函数的开头设置它或将其作为参数传递。

为了清楚起见,您有正确的想法,使用echo进行测试。但是,当您发现类似问题时,您也希望echo实际上是相关变量。

即使您发布了完整代码的链接,也可以在函数范围之外定义$num_rows。您需要使用$num_rows从函数中调用global,但除非您确定$num_rows始终相同,否则通常不建议这样做。即便如此,为什么不将它设置在函数中或一直传递它?

有关详细信息,请参阅PHP docs on variable scope.