这个 php 会话代码有什么问题?“解析错误:语法错误,文件意外结束”


What is wrong in this php session code? "Parse error: syntax error, unexpected end of file"

if ($_SESSION['raza'] == 'Humano') {
           $defensaraza = 10 + $defensa;
           $magiaraza = 5 + $magia;
           $iniciativaraza = 5 + $iniciativa;
           $ataqueraza = $ataque + $entrenamientomelee[$edcuerpoacuerpo]['nivel'] * 0.5;
           $balisticaraza = $balistica + $entrenamientobalistico[$edbalistica]['nivel'] * 0.5;
           ?>
          <span style="display:block; font-size:17px" ><?php echo 'Ataque: +' . $ataqueraza . '%' ?></span>
          <span style="display:block; font-size:17px" ><?php echo 'Balistica: +' . $balistica . '%' ?></span>
         <span style="display:block; font-size:17px" > <?php echo 'Magia: +' . $magiaraza . '%' ?></span>
            <span style="display:block; font-size:17px" ><?php echo 'Defensa: +' . $defensaraza . '%' ?></span>
            <span style="display:block; font-size:17px" ><?php echo 'Iniciativa: +' . $iniciativaraza . '' ?></span>
    <?php
    }
    if ($_SESSION['raza'] == 'Orco') {
        $defensaraza = 10 + $defensa;
        $magiaraza = 5 + $magia;
        $iniciativaraza = -5 + $iniciativa;
        $ataqueraza = 10 + $ataque + $entrenamientomelee[$edcuerpoacuerpo]['nivel'] * 0.5;
        $balisticaraza = $balistica + $entrenamientobalistico[$edbalistica]['nivel'] * 0.5;
        ?>
          <span style="display:block; font-size:17px" ><?php echo 'Ataque: +' . $ataqueraza . '%'; ?></span>
          <span style="display:block; font-size:17px" ><?php echo 'Balistica: +' . $balistica . '%'; ?></span>
         <span style="display:block; font-size:17px" > <?php echo 'Magia: +' . $magiaraza . '%'; ?></span>
            <span style="display:block; font-size:17px" ><?php echo 'Defensa: +' . $defensaraza . '%'; ?></span>
            <span style="display:block; font-size:17px" ><?php echo 'Iniciativa: +' . $iniciativaraza; ?></span>
<?php } ?>

如果我以另一种方式拥有它,那没关系:

if ($_SESSION['raza'] == 'Humano') {
           $defensaraza = 10 + $defensa;
           $magiaraza = 5 + $magia;
           $iniciativaraza = 5 + $iniciativa;
           $ataqueraza = $ataque + $entrenamientomelee[$edcuerpoacuerpo]['nivel'] * 0.5;
           $balisticaraza = $balistica + $entrenamientobalistico[$edbalistica]['nivel'] * 0.5;
           ?>
          <span style="display:block; font-size:17px" ><?php echo 'Ataque: +' . $ataqueraza . '%' ?></span>
          <span style="display:block; font-size:17px" ><?php echo 'Balistica: +' . $balistica . '%' ?></span>
         <span style="display:block; font-size:17px" > <?php echo 'Magia: +' . $magiaraza . '%' ?></span>
            <span style="display:block; font-size:17px" ><?php echo 'Defensa: +' . $defensaraza . '%' ?></span>
            <span style="display:block; font-size:17px" ><?php echo 'Iniciativa: +' . $iniciativaraza . '' ?></span>
    <?php
    }?>

我也尝试放置 else if 并检查 php 的所有打开和关闭,但我不明白为什么这个错误发生在我身上,只有会话。会话在这一点上是 100% 开始的,如果它在第一个 If 上,它就会正确,即使我将"humano"更改为会话的另一个名称,问题还是第二个 if。请帮忙。

你的php标签看起来很尴尬,不知何故,你的大括号或打开和关闭的php标签不匹配。幸运的是,有一种更好/更清洁的方法。PHP 控制结构的替代语法。

像这样:

<?php if ($_SESSION['raza'] == 'Orco'): ?>
<?php
    $defensaraza = 10 + $defensa;
    $magiaraza = 5 + $magia;
    $iniciativaraza = -5 + $iniciativa;
    $ataqueraza = 10 + $ataque + $entrenamientomelee[$edcuerpoacuerpo]['nivel'] * 0.5;
    $balisticaraza = $balistica + $entrenamientobalistico[$edbalistica]['nivel'] * 0.5;
?>
   <span style="display:block; font-size:17px" ><?php echo 'Ataque: +' . $ataqueraza . '%' ?></span>
   <span style="display:block; font-size:17px" ><?php echo 'Balistica: +' . $balistica . '%' ?></span>
   <span style="display:block; font-size:17px" > <?php echo 'Magia: +' . $magiaraza . '%' ?></span>
   <span style="display:block; font-size:17px" ><?php echo 'Defensa: +' . $defensaraza . '%' ?></span>
   <span style="display:block; font-size:17px" ><?php echo 'Iniciativa: +' . $iniciativaraza . '' ?></span>
<?php endif; ?>

一试。