【问题标题】:Switch Statements not working切换语句不起作用
【发布时间】:2015-09-29 17:02:48
【问题描述】:

我正在尝试使用 switch 语句,但它不起作用。我的问题是,例如我在文本框中输入 LazyBoy,它应该回显 LazyBoy 否则回显另一个字符串。

<?php

  $classmap = $_POST['classmap'];

  switch ($classmap) {
    case "LazyBoy":
        echo "You're Lazy!";
        break;
    case "GrayHounds":
        echo "You're Gray!";
        break;
  }

?>

这是表格 -

<form action="checkout.php" method="post" >
<input type="hidden" name ="classmap" value="<?php include('db.php');
    $origin = $_POST['origin'];
    $class = $_POST['class'];
    $daten = $_POST['daten'];
    $result = mysql_query("SELECT * FROM route WHERE route LIKE '%$origin%' AND type LIKE '%$class%' AND date LIKE '%$daten%' ");
    while($row = mysql_fetch_array($result))
    {
        echo $row['type'];
    }   ?>">

  </form>

【问题讨论】:

标签: php html switch-statement


【解决方案1】:

您只需要检查是否设置了 post 变量和/或添加默认情况:

if(isset($_POST['classmap'])) {
     $classmap = $_POST['classmap'];

     switch ($classmap) {
        case "LazyBoy":
            echo "Your Lazy!";
            break;
        case "GrayHounds":
            echo "Your Gray!";
            break;
        default:
            echo "Something";
            break;
     }
}
else {
     echo "Something";
}

【讨论】:

  • 我总是回应“某事”
  • 如果它总是回显“Something”,则该值不是“LazyBoy”或“GrayHounds”。显示变量的内容,您将确定它是什么: echo $classmap
【解决方案2】:

确保发布到正确的脚本。 尝试将默认语句调试。

$classmap = $_POST['classmap'];

switch ($classmap) {
   case "LazyBoy":
       echo "You're Lazy!";
       break;
   case "GrayHounds":
       echo "You're Gray!";
       break;
   default:
       echo "does not match with previous cases";
}

【讨论】:

  • 你们如何格式化发布的代码?我的帖子是 1 个字符串,没有颜色。 :(
  • 它总是回显“与以前的情况不匹配”
  • 然后你可以尝试回显 $classmap
【解决方案3】:

首先你必须发布值来定义类映射索引。

<form method="post">
    <input type="text" name="classmap" value="LazyBoy"/>
    <input type="submit" value="submit"/>
</form>
<?php


  $classmap = (isset($_POST['classmap']) ? $_POST['classmap'] : null);


  switch ($classmap) {
    case "LazyBoy":
        echo "You're Lazy!";
        break;
    case "GrayHounds":
        echo "You're Gray!";
        break;
  }

?>

【讨论】:

  • 为什么 OP 应该“试试这个”?一个好的答案总是会解释所做的事情以及这样做的原因,不仅适用于 OP,而且适用于 SO 的未来访问者。
  • @Jay Blanchart - 你是对的。谢谢。我只是说要试试这个,因为我测试了这段代码。
【解决方案4】:

您的代码是正确的。 我猜 $_POST 有问题。

尝试验证它。

$classmap = "LazyBoy";

【讨论】:

  • 是的,它的 LazyBoy 或 GrayHounds。
猜你喜欢
  • 1970-01-01
  • 2018-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多