【问题标题】:switch case not working correctly开关盒无法正常工作
【发布时间】:2018-06-05 03:42:32
【问题描述】:

我尝试在 switch 中设置大小写值。根据这段代码,它应该是回显“你最喜欢的颜色是红色”,但事实并非如此。当我运行这段代码时,它会给出一个结果:

您最喜欢的颜色既不是红色、蓝色也不是绿色!但红色。

这是我的代码

<?php
$response = null;

switch ($msg) {
    case "red":
        echo "Your favorite color is red";
        break;
    case "blue":
        echo "Your favorite color is blue!";
        break;
    case "green":
        echo "Your favorite color is green!";
        break;
    default:
        echo "Your favorite color is neither red, blue, nor green! but " . $msg . " colour.";
}

【问题讨论】:

  • 然后检查你的 $msg 值; $msg 的问题,这就是为什么给你一个默认值。
  • 我的 $msg 值为红色。我试图回应它。
  • $msg 是否有任何空白需要修剪?试试 echo $msg === 'red'
  • 请使用trim确保值($msg)与case中的值完全相同,并使用issetempty进行验证。
  • 请不要修改您的 OP 中的代码,因为它会使已给出的任何建议无效,而是编辑它并添加到您的帖子中。

标签: php switch-statement


【解决方案1】:

要将此标记为已回答,正如我的评论中所建议的那样,您需要验证您的输入以确保没有空格会抛出您的 switch 语句,为此您可以使用trim

另一个建议是在传入的$_POST 上也使用issetempty 以确保它正在发送。您也应该始终清理您的用户输入,因为有人可能会通过您的请求传递恶意数据。在您当前的情况下,它们不会造成太大的持久损害,但是在处理大型项目时,验证和清理任何传入数据非常重要。 永远不要相信用户输入。

【讨论】:

    猜你喜欢
    • 2019-09-19
    • 1970-01-01
    • 2017-12-16
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    相关资源
    最近更新 更多