PHP嵌套,如果语法错误
问题描述:
我有一个奇怪的语法问题有关嵌套if
语句。PHP嵌套,如果语法错误
此代码错误:
if(true):
if(true){
var_dump(true);
}
else:
var_dump(false);
endif;
此代码不会出错(注意添加;
):
if(true):
if(true){
var_dump(true);
};
else:
var_dump(false);
endif;
是怎么回事?
答
Note: Mixing syntaxes in the same control block is not supported.
这是从PHP手册中的注意事项:
http://php.net/manual/en/control-structures.alternative-syntax.php
答
这是因为else被分配给内部如果没有;
答
我知道这是一个老问题,但我发现了一个有效的答案。我改变了OP的代码:
if(true):
if(true){
var_dump(true);
}
else:
var_dump(false);
endif;
以下几点:
if (true) :
{
if (true) {
var_dump (true);
} else {
var_dump (false);
}
}
endif;
其成功运行,并且打印true
。
我做的唯一改变是我把嵌套的if
包装在一个块中。
简化代码:
if (true) :
{
if (true)
var_dump (true);
else
var_dump (false);
}
endif;
请注意,我使用PHP 7.0.0
。
';'预计在endif之后。也请@anybody不要使用if():endif;语法:P – n00b 2011-03-31 21:46:57
可能只是我的看法,但我总是将该语法看作是一个可怕的perl神器。 (+1 n00b)。我想补充一点,while循环也是糟糕的(该死的在WordPress中很受欢迎)。 – Christian 2011-03-31 21:47:02
@ n00b和@Christian Sciberras它适用于我相信的PHP模板,而不适用于方法等。当您将PHP逻辑与HTML混合在一起时,这很有用,因为它比浮动花括号更容易阅读,因为它可能会关闭如果或一段时间或为等http://php.net/manual/en/control-structures.alternative-syntax.php – Treffynnon 2011-03-31 21:52:02