我有一段代码:
$a = false;
if ($a)
echo 'A'; if (false) echo 'B';
else echo 'C';
else
语句将根据$a
的值更改"belongship"。如果它是true
,它似乎将其解释为:
if ($a)
{
echo 'A';
if (false)
{
echo 'B';
}
else
{
echo 'C';
}
}
并打印AC
。但如果$a = false
,它似乎将其解释为:
if ($a)
{
echo 'A';
if (false)
{
echo 'B';
}
}
else
{
echo 'C';
}
并打印C
。
我是不是遗漏了什么?
您的第一个代码读取为
$a = false;
if ($a) {
echo 'A';
}
if (false) {
echo 'B';
}
else {
echo 'C';
}
如果不使用大括号,则只有下一条语句(语句,而不是行)作为该控制结构的一部分执行。它并不含糊,因为这种行为在编程语言中有明确的定义。
$a = false;
if ($a)
echo 'A'; if (false) echo 'B';
else echo 'C';
等于
$a = false;
if ($a) echo 'A';
if (false) echo 'B'; else echo 'C';
由于if
控制结构接受语句作为主体,请参阅:http://php.net/if
echo 'A';
就是这样的陈述。因此,下一个if
被视为一段独立的代码。
两组结果都与单一解释一致:
if ($a)
{
echo 'A';
}
if (false)
{
echo 'B';
}
else
{
echo 'C';
}
所以我想这就是它在做什么。
如果您得到正确的缩进,即,则会有所帮助
$a = false;
if ($a) echo 'A';
if (false) echo 'B';
else echo 'C';
a-false,结果为Ca-true,结果AC