我们正在尝试为变量 $day
创建一个 if/elseif 语句。 我们在与此 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!";
}
当您打算使用比较==
时,您正在使用赋值=
。
分配计算到右侧的内容,因此
if ($day = 1)
与
if (1)
由于这些规则与
if (true)
这应该解释为什么程序的行为就像它一样,当然你现在知道如何修复它。但是,如果您使用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
}
你正在分配 ( =
)。你需要一个逻辑相等式(==
)。
if ($day == 1) {
echo "Sunday Funday! What COMMITMENT to going out!";
}
查看比较运算符和逻辑运算符。也是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 => "...",
);
然后代码变得非常简单:
echo $map[ $day ];
(理想情况下将使用isset
检查。但是对于开发阶段,PHP足够聪明,可以给出有关缺少条目的提示。如果输入值已经约束/断言,则无论如何都不需要。
你想让所有条件都像这样
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!";
}
比较运算符是==
而不是=
。
还可以尝试以下查找表方法,该方法在这种情况下更干净:
$day_msg = 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 => "Hump day!! But seriously, what are you doing...? Aren't you too hungover from last night?",
5 => "Thirsty Thursday!! It's close enough to the weekend... right?"
6 => "It's Friiiiiiday, Friiiiiiiday, Gotta get down on Friiiiiiiiiday!",
7 => "It's FRATurday! Go have some fun!"
);
echo "<p>";
echo $day_msg[$day];
你首先认为是对的,你需要两个等号。