如果是PHP中的/ Elseif语句

use*_*549 1 html php if-statement

我们正在尝试为变量创建if/elseif语句$day.我们在与此PHP相关联的HTML代码中定义了变量及其值.我将PHP部分粘贴到此页面.问题是结果页面只给出"$ day = 1"的响应.有没有人知道这段代码会导致这种情况发生的错误?我们也试过使用两个等号,但这更糟糕!

echo "<p>";
                if ($day = 1) {
                    echo "Sunday Funday! What COMMITMENT to going out!";
                } elseif ($day = 2) {
                    echo "The start of what's sure to be a rough week. Drink away your sorrows.";
                } elseif ($day = 3) {
                    echo "Epic night! SO many themes at the bars!";
                } elseif ($day = 4) {
                    echo "Hump day!! But seriously, what are you doing...? Aren't you too hungover from last night?";
                } elseif ($day = 5) {
                    echo "Thirsty Thursday!! It's close enough to the weekend... right?";
                } elseif ($day = 6) {
                    echo "It's Friiiiiiday, Friiiiiiiday, Gotta get down on Friiiiiiiiiday!";
                } elseif ($day = 7) {
                    echo "It's FRATurday! Go have some fun!";

            } 
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 8

=当您打算使用比较时,您正在使用作业==.

分配评估到右边的内容,所以

if ($day = 1)
Run Code Online (Sandbox Code Playgroud)

是相同的

if (1)
Run Code Online (Sandbox Code Playgroud)

由于这些规则是相同的

if (true)
Run Code Online (Sandbox Code Playgroud)

这可以解释为什么程序的行为与它一样,当然你现在知道如何解决它.但是如果你使用一个switch声明会更好:

switch($day) {
    case 1:
        echo "Sunday Funday! What COMMITMENT to going out!";
        break;
    case 2:
        echo "The start of what's sure to be a rough week.";
        break;
    // etc etc
}
Run Code Online (Sandbox Code Playgroud)


Jas*_*ary 6

你正在分配(=).你需要一个逻辑相等(==).

if ($day == 1) {
  echo "Sunday Funday! What COMMITMENT to going out!";
}
Run Code Online (Sandbox Code Playgroud)

查看比较逻辑运算符.另外,switch()声明.


mar*_*rio 6

如果您有一长串要检查的条件,通常不需要编写if/else语句的长链.而是尝试一个switch块,甚至是array地图:

 $map = array(
    1 => "Sunday Funday! What COMMITMENT to going out!",
    2 => "The start of what's sure to be a rough week. Drink away your sorrows.",
    3 => "Epic night! SO many themes at the bars!",
    4 => "...",
 );
Run Code Online (Sandbox Code Playgroud)

那时代码变得非常简单:

 echo $map[ $day ];
Run Code Online (Sandbox Code Playgroud)

(理想情况下会使用isset检查.但是对于开发阶段,PHP非常聪明,可以提供有关缺少条目的提示.如果输入值已经被约束/断言,则无论如何都不需要.)