【问题标题】:PHP switch case $_GET's variables and switch case $_GET's variable's valuesPHP switch case $_GET 变量和 switch case $_GET 变量值
【发布时间】:2013-05-15 01:34:42
【问题描述】:

假设我有一个类似www.mysite.com/index.php?login=0 的网址。是否可以切换 case $_GET 的变量和切换 case $_GET 的变量值?

类似:

switch ($_GET) {
    case 'login' :
        switch($_GET['login']) {
            case '0' :
                echo 'Login failed!';
                break;
            case '1' :
                echo 'Login successful.';
                break;
        }
        break;
    case 'register' :
        switch ($_GET['register']) {
            case '0' :
                echo 'Registration failed!';
                break;
            case '1' :
                echo 'Thank you for registering.';
                break;
        }
        break;
    default :
        echo 'Some other message';
        break;
}

我不确定是否可以在关联数组上使用 switch case。我究竟做错了什么?干杯!

【问题讨论】:

  • 我根据评论改进了我的答案。
  • 只要您对所有值使用 switch-case,您的代码也非常安全,因为您从不直接使用任何用户提供的值。

标签: php get switch-statement


【解决方案1】:

您必须将开关包含在 foreach() 循环中。

foreach ($_GET as $key => $value) {
    switch ($key) {
        case 'login' :
            switch ($value) {
                case '0' :
                    echo 'Login failed!';
                    break;
                case '1' :
                    echo 'Login successful.';
                    break;
            }
            break;
        case 'register' :
            switch ($value) {
                case '0' :
                    echo 'Registration failed!';
                    break;
                case '1' :
                    echo 'Thank you for registering.';
                    break;
            }
            break;
        default :
            echo 'Some other message';
            break;
    }
}

【讨论】:

  • +1 但您可以将switch($_GET['login']) 等更改为switch($value)
  • @Prof.飞肯 非常感谢! :)
【解决方案2】:

我不认为它会像这样工作,$_get 将返回一个数组并且这些比较将不起作用。 Switch 语句需要计算为常量。

【讨论】:

    【解决方案3】:

    就用这个吧:

    switch($_GET['key']) //it will return you value of particular parameter.
    case 'value1':
    //write your statement here.
    break;
    case 'value2':
    //write your statement here.
    break;
    //and so on
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      相关资源
      最近更新 更多