如果"else"以新的php块开头,则会出错

use*_*796 5 php

只是想知道为什么下面的代码给出了"意外的T_ELSE"语法错误:

<?php if (isset($_SESSION["user_id"])) { ?>
            <h2>Welcome, <?php echo $_SESSION["user_id"]; ?></h2>
<?php } ?>
<?php else { ?>
    <form action="" method="post">
        <label for="user">User ID</label>
        <input type="text" id="user" />
        <label for="password">Password</label>
        <input type="password" id="password" />
        <input type="submit" value="Login" />
    </form>
<?php } ?>
Run Code Online (Sandbox Code Playgroud)

虽然我保持} else {在同一行,它工作正常.我的意思是下面的代码工作正常:

<?php if (isset($_SESSION["user_id"])) { ?>
            <h2>Welcome, <?php echo $_SESSION["user_id"]; ?></h2>
<?php } else { ?>
    <form action="" method="post">
        <label for="user">User ID</label>
        <input type="text" id="user" />
        <label for="password">Password</label>
        <input type="password" id="password" />
        <input type="submit" value="Login" />
    </form>
<?php } ?>
Run Code Online (Sandbox Code Playgroud)

cyp*_*abe 1

稍微思考一下,我意识到这必须是预期的行为。

考虑以下(语法错误)示例:

<?php if ($condition == true) { ?>
  <div id="first">Yey</div>
<?php } ?>
<span id="second?">where am I?</span>
<?php else { ?>
  <div id="first">Ney</div>
<?php } ?>
Run Code Online (Sandbox Code Playgroud)

span 元素将处于未定义状态