PHP字符串切换使用NOT运算符

Alf*_*and 0 php switch-statement

我在一个投资组合网站的标题中有一个小的switch语句,它管理哪个链接显示在哪个页面上.$ id的值来自GET变量,即 - '?id = index'.

    switch($id) {
    case "index":
        //Show links to content
    case !"index":
        //Show link to index
    case !"about":
        //show link to about page
}
Run Code Online (Sandbox Code Playgroud)

问题是NOT运算符在最后两种情况下不起作用.我希望索引的链接显示用户何时不在索引页面上,同样显示about页面.目前,所有链接都显示在索引页面上(当$ id =="index"时),NONE显示在任何其他页面上.

为什么会这样?

Osw*_*ald 5

就是这样,因为它应该如此.

switch使用==运算符进行比较.所以在第二种情况下,你实际上是在测试是否

$id == (!"index")
Run Code Online (Sandbox Code Playgroud)

哪个将始终评估,false因为任何字符串都将是,true而不是真的false.

这意味着,在您的情况下,使用if和更好else.