使用if和else语句错误

Sam*_*sah 3 php url get

我创建了两个链接,我希望页面内容能够改变.问题是URL更改但不是页面内容.

<h3>Filter Results</h3>
<p><a href="index.php?filter='Action'>Action</a></p>
<p><a href="index.php?filter='Comedy'">Comedy</a></p>
Run Code Online (Sandbox Code Playgroud)
if (isset($_GET['filter']) == 'Action') {
    echo 'Action';  
}
else if (isset($_GET['filter']) =='Comedy') {    
    echo 'Comedy';
}
Run Code Online (Sandbox Code Playgroud)

它总是输出第一个链接信息"Action".

Mad*_*iha 7

您的链接有问题:

<p><a href="index.php?filter=Action">Action</a></p>
<p><a href="index.php?filter=Comedy">Comedy</a></p>
<!--                         ^    ^ No single quotes (' ') -->
Run Code Online (Sandbox Code Playgroud)

Yogesh Suthar首先指出了这一点

此外,isset()将返回一个布尔值(truefalse;根据是否设置变量).您将布尔值与字符串进行比较,字符串将始终转换为TRUE(除非字符串为"false"或类似),因此基本上,如果设置了变量,则第一个条件将始终匹配.

你要

if (isset($_GET["filter"]) && $_GET["filter"] === "Action")
Run Code Online (Sandbox Code Playgroud)

注意使用===,这将确保变量完全符合您的想法,而不是某种其他类型变量.

几点(从其他答案中无耻地被盗)

  • 如果有多个可能的过滤器,请检查变量是否存在一次,并使用switch/case块来确定它们中的哪一个:

    if(isset($_GET['filter'])) {
        switch($_GET['filter']) {
            case 'Action':
                echo 'Action';
                break;
            case 'Comedy':
                echo 'Comedy';
                break;
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)


Lar*_*ert 5

该函数isset仅检查变量是否存在!它不会返回它的价值!试试这个:

<h3>Filter Results</h3>
<p><a href="index.php?filter=Action">Action</a></p>
<p><a href="index.php?filter=Comedy">Comedy</a></p>
Run Code Online (Sandbox Code Playgroud)
if(isset($_GET['filter']) && $_GET['filter'] == 'Action'){
    echo 'Action';  
}

else if(isset($_GET['filter']) && $_GET['filter'] == 'Comedy') {
    echo 'Comedy';
}
Run Code Online (Sandbox Code Playgroud)

此外,使用switch可能会在未来使事情变得更容易:

<h3>Filter Results</h3>
<p><a href="index.php?filter=Action">Action</a></p>
<p><a href="index.php?filter=Comedy">Comedy</a></p>
Run Code Online (Sandbox Code Playgroud)
if(isset($_GET['filter'])) {
    switch($_GET['filter']) {
        case 'Action':
            echo 'Action';
            break;
        case 'Comedy':
            echo 'Comedy';
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)