Php 如果还需要解释的话

Php 如果还需要解释的话,php,Php,我在php中编写了一段代码,发现这样的代码有一个问题: <?php if(isset($_GET['f'])) { ?> <?php if($_GET['f']=="message_reçus") { ?> -- another code here -- <?php } ?> <?php } ?> <?php else { ?> --这里是另一个代码-- 但当我这样写的时候: <?php

我在php中编写了一段代码,发现这样的代码有一个问题:

<?php if(isset($_GET['f'])) { ?>
    <?php if($_GET['f']=="message_reçus") { ?>
        -- another code here --
    <?php } ?>
<?php } ?>  
<?php else { ?>

--这里是另一个代码--
但当我这样写的时候:

<?php if(isset($_GET['f'])) { ?>
    <?php if($_GET['f']=="message_reçus") { ?>
        -- another code here --
    <?php } ?>  
<?php } else { ?>

--这里是另一个代码--
它起作用了

我需要一个关于第一个版本中问题的原因的清晰解释,因为我仍然相信两个版本在语法上都是正确的

PHP解析器向我显示:解析错误:语法错误,意外的'else'(T_else)


我不需要任何替代解决方案,我只是想知道为什么在第一个版本中会出现问题,以及它有什么问题

思考这个问题的一种方法是替换
?> @NietTheDarkAbsol在另一个答案中详细描述了该问题。我添加这个答案是为了通过删除它来添加问题的替代解决方案

问题被解释了(@NietTheDarkAbsol答案描述了这一点) 通过分隔您在
\n
或新行中添加的行,而
else
必须始终位于开口
if
的右括号之后

<?php if ($a === $b) { ?>  
<?php } ?>  
<?php else { ?>

由于您的代码现在不依赖于花括号,所以在等待
endif
else:
elseif(…):
block.

请修复非信息标题。对于类似的内容,请使用其他语法-更易于阅读。“有问题”???是的!真奇怪。Php解析器告诉我:解析错误:语法错误,意外的'else'(T_else)请把这个细节放在问题中。这是一个有趣的类比,但似乎只不过是一个类比。我不知道一个更专业的答案会是什么样子,请注意。去他妈的,这就行了
不会打印“\n”。@CooPer详细信息可能会有所不同-iirc
?>\n
不会输出尾随的换行符,但即使这样,您仍然会有
echo”“(空字符串)干扰了if/else对。@NiettheDarkAbsol这是真的,我们可以想象
?>是的,这很好,但我需要解释一下为什么它不能在上面工作!尼特在回答中解释了这一点。通过分隔您在
\n
或新行中添加的行,而
else
必须始终位于开口
if
的右括号之后。
<?php if ($a === $b) { ?>  
<?php } ?>  
<?php else { ?>
<?php if(isset($_GET['f'])) : // Colon instead of an '{' ?>
    <?php if($_GET['f']=="message_reçus") : ?>
        <!-- HTML here -->
    <?php else : ?>
        <!-- alternative HTML here -->
    <?php endif; // endif; instead of an '}' ?>
<?php endif; ?>