PHP游戏获胜';无法识别来自表单的输入,不';t运行开关case语句

PHP游戏获胜';无法识别来自表单的输入,不';t运行开关case语句,php,forms,input,switch-statement,Php,Forms,Input,Switch Statement,我有一个基于文本的探索游戏,我正在开发,我的代码不会从我的命令表单中获取输入。它可能需要输入,只是我使用的PHP无法识别它。另一个问题是,我的switch($command){语句似乎没有运行。它只是跳过了整个过程。我不知道发生了什么。任何帮助都将不胜感激。 代码: index.php(我将其作为一个.php文件,因此$input变量可以从该文件传递到game.php) 城市探险 game.php: <?php include_once 'index.php'; pri

我有一个基于文本的探索游戏,我正在开发,我的代码不会从我的命令表单中获取输入。它可能需要输入,只是我使用的PHP无法识别它。另一个问题是,我的
switch($command){
语句似乎没有运行。它只是跳过了整个过程。我不知道发生了什么。任何帮助都将不胜感激。 代码: index.php(我将其作为一个.php文件,因此$input变量可以从该文件传递到game.php)


城市探险
game.php:

<?php
    include_once 'index.php';
    print($input);
    $World = simplexml_load_file("gameworld.xml");
    $CurrentPos = 0;
    $Done = 0;
    print "<br>";
    printplace();
    function printplace() {
    GLOBAL $World, $CurrentPos;
    $Room = $World->ROOM[$CurrentPos];
    $Name = $Room->NAME;
    $Desc = wordwrap((string)$Room->DESC);
    print "$Name<br>";
    print str_repeat('-', strlen($Name));
    print "<br>$Desc<br>";
    if ((string)$Room->NORTH != '-') {
        $index = (int)$Room->NORTH;
        print "North: {$World->ROOM[$index]->NAME}<br>";
    }
    if ((string)$Room->SOUTH != '-') {
        $index = (int)$Room->SOUTH;
        print "South: {$World->ROOM[$index]->NAME}<br>";
    }
    if ((string)$World->ROOM[$CurrentPos]->WEST != '-') {
        $index = (int)$Room->WEST;
        print "West: {$World->ROOM[$index]->NAME}<br>";
    }
    if ((string)$World->ROOM[$CurrentPos]->EAST != '-') {
        $index = (int)$Room->EAST;
        print "East: {$World->ROOM[$index]->NAME}<br>";
    }
    print "<br>";
}

$input = explode(' ', $input);
print "<br>";
foreach ($input as $command) {
    switch ($command) {
        case 'north':
            if ((string)$World->ROOM[$CurrentPos]->NORTH != '-') {
                $CurrentPos = (int)$World->ROOM[$CurrentPos]->NORTH;
                printplace() ;
            } else {
                print "You cannot go north!<br>";
            }
            break;
        case 'south':
            if ((string)$World->ROOM[$CurrentPos]->SOUTH != '-') {
                $CurrentPos = (int)$World->ROOM[$CurrentPos]->SOUTH;
                printplace() ;
            } else {
                print "You cannot go south!<br>";
            }
            break;
        case 'west':
            if ((string)$World->ROOM[$CurrentPos]->WEST != '-') {
                $CurrentPos = (int)$World->ROOM[$CurrentPos]->WEST;
                printplace() ;
            } else {
                print "You cannot go west!<br>";
            }
            break;
        case 'east':
            if ((string)$World->ROOM[$CurrentPos]->EAST != '-') {
                $CurrentPos = (int)$World->ROOM[$CurrentPos]->EAST;
                printplace() ;
            } else {
                print "You cannot go east!<br>";
            }
            break;
        case 'look':
            printplace() ;
            break;
        default:
            print "not a valid command... <br>";
            break;
    }
}
print "<br>Thanks for playing!<br>";
?>

发生的情况是,输入不起作用,switch case语句不起作用,
打印“
感谢播放!
”;
在switch case语句之前运行。很抱歉,如果我不能正确描述这一点。您可能希望在此处查看真实内容:。您将能够看到那里发生的真实错误。

<?php $input = $_POST["input"]; ?>

除此之外,还包括其他问题

移动

<?php $input = $_POST["input"]; ?>


在include上面-虽然这里还有其他问题

在包含所有game.php之前,您不应该分配$input变量。您能澄清一下吗?我不太明白,对不起。您是说在包含所有game.php之前,我不应该分配$input吗?如果是,我怎么做(我还没有包含它吗?对不起,我是个noob),或者您是说我的问题是,在包含所有game.php之前,您不会分配$input变量?请将
移到包含的上方-尽管此处还有其他问题,但input的工作非常出色。谢谢+1@dagon请将您的评论移至“答案”部分,以便我们将问题标记为已回答。谢谢!谢谢在包含所有game.php之前,不要分配$input变量。你能澄清一下吗?我不太明白,对不起。你是说在包含所有game.php之前,我不应该分配$input吗?如果是,我怎么做(我还没有包括它?对不起,我是个noob),或者您是说我的问题是,在包含所有game.php之前,您不会分配$input变量?请将
移到包含的上方-尽管此处还有其他问题,但input的工作非常出色。谢谢+1@dagon请将您的评论移动到“答案”部分,以便我们将问题标记为已回答。谢谢!