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)
=当您打算使用比较时,您正在使用作业==.
分配评估到右边的内容,所以
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)
你正在分配(=).你需要一个逻辑相等(==).
if ($day == 1) {
echo "Sunday Funday! What COMMITMENT to going out!";
}
Run Code Online (Sandbox Code Playgroud)
查看比较和逻辑运算符.另外,switch()声明.
如果您有一长串要检查的条件,通常不需要编写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非常聪明,可以提供有关缺少条目的提示.如果输入值已经被约束/断言,则无论如何都不需要.)