1

我有这个 PHP 开关:

<?php

$destination = isset($_GET['act']);
switch ($destination) {


    default:
        echo "test";
        break;

    case "manage":
        echo "manage things";
        break;

    case "create":
        echo "create things";

        break;


}

?>    

但是,当我去 时test.php?act=create,输出manage things不是create things.... 当我去test.php?act=manage- 当然我得到manage things...

所以......我该如何解决这个问题?谢谢

4

3 回答 3

7

php 的isset返回一个布尔值。所以 $destination 要么是真要么是假,而不是字符串。

尝试

if(isset($_GET['act']))
    $destination = $_GET['act'];
于 2013-10-31T01:57:48.800 回答
3

你的问题是:

$destination = isset($_GET['act']);

isset返回truefalse,从不返回您正在使用的任何字符串值。

你可以使用类似的东西:

$destination = isset($_GET['act']) ? $_GET['act'] : '';
于 2013-10-31T01:57:56.483 回答
2

你必须使用:

<?php

if(isset($_GET['act'])) $destination = $_GET['act'];

switch ($destination) {

    case "manage":
        echo "manage things";
        break;

    case "create":
        echo "create things";
        break;

    default:
        echo "test";

}

或者只是使用:

$destination = @$_GET['act'];
于 2013-10-31T01:59:58.017 回答