-4

関数level()が実行されないのはなぜですか? PHP コードの別の場所で start を実行しているので、それは無関係です。私は書き$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);
}
}
4

1 に答える 1

3

$num_rowsの前に宣言していないforため、forループは実行されません。関数の開始時にそれを設定するか、パラメーターとして渡す必要があります。

明確にするために、あなたは正しい考えを持っていて、echoテストに使用していました。ただし、echoこのような問題が発生した場合は、実際に関連する変数も必要です。

$num_rows完全なコードに投稿したリンクがあっても、関数の範囲外で定義しています。$num_rowsを使用して関数内から呼び出す必要がありますが、常に同じであるglobalことが確実でない限り、一般的にはお勧めしません。$num_rowsそれでも、関数に設定したり、一貫して渡したりしないのはなぜですか?

詳細については、変数スコープに関する PHP ドキュメントを参照してください。

于 2013-10-30T01:12:50.043 に答える