douchao1879 2014-04-13 20:39
浏览 83
已采纳

带有$ _GET变量的PHP switch语句

Pages such as this: PHP switch case $_GET's variables and switch case $_GET's variable's values and others have helped, but I am at a loss as to why my switch statment does not work.

A user may be directed to my page with index.php?class=className&badge=badgeName or index.php?class=className or index.php?badge=badgeName or just plain old index.php

This code works just fine

if ($_GET["badge"] && $_GET["class"]) {
echo 'Badge and Class'; 
} elseif ($_GET["badge"] && !$_GET["class"]) {
echo 'Badge only';   
} elseif (!$_GET["badge"] && $_GET["class"]) {
echo 'Class only';  
} else {
echo 'No variables';    
} 

But I was trying to simplify with a switch statement, whereby all works well except for the default case:

switch ($_GET) {
    case $_GET["badge"] && $_GET["class"]:
        echo 'Badge and Class';
        break;
    case $_GET["badge"] && !$_GET["class"]:
        echo 'Badge Only';
        break;
    case !$_GET["badge"] && $_GET["class"]:
        echo 'Class only';
        break;
    default:
        echo "No badge or class";
}

Any help appreciated.

  • 写回答

3条回答 默认 最新

  • duanjuebin2519 2014-04-13 20:51
    关注

    You can try something like this:

    switch (true) {
        case ($i ==0):
            echo '$i ==0';
            break;
        case ($i < 1):
            echo '$i < 1';
            break;
        case ($i > 1):
            echo '$i > 1';
            break;
    }
    

    For your case:

    switch (true) {
        case ($_GET["badge"] && $_GET["class"]):
            echo 'Badge and Class';
            break;
        case ($_GET["badge"] && !$_GET["class"]):
            echo 'Badge Only';
            break;
        case (!$_GET["badge"] && $_GET["class"]):
            echo 'Class only';
            break;
        default:
            echo "No badge or class";
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?