在HTML和PHP块上构造PHP条件


Structuring PHP conditional over HTML and PHP blocks

我想做这样的事情:

<?php if ($somecondition) : ?>
<p style='font-size: 18px;color:#DF5F5F'><strong>An error occurred!</strong></p>
<!-- some more html -->
<?php else:
  chop($xpath);
  $alot;
  $ofphp;
?>
<ul>
<li>More</li>
<li>HTML</li>
<li>With: <?php echo strtoupper($vaiables); ?></li>
</ul>
<?php
  if ($anothercondition) {
    if ($andanother) {
      echo '<p>Some HTML</p>';
    }
    else {
      echo '<p>Some other HTML</p>';
    }
  }
endif;
?>

正如你所看到的,我希望整个被一个条件$somecondition和它的另一个替代条件包围。每一个里面都有HTML输出PHP的空间。但是,我不想对每个HTML元素使用echo(正如您在第二行中看到的)。

是否可以混合if ($condition):if ($condition() {},以及如何混合?如何在不必在$anothercondition块中使用echo的情况下正确构建上述代码?

混合使用大括号和冒号样式的控制流语句没有问题。唯一的要求是,如果您对if使用特定的样式,则必须对其相应的elseelseif子句使用相同的样式,即您不能编写

if ($cond):
    // code
else {
    // other code
}
endif;

但是,当您嵌套它们时,您可以在每个级别使用不同的样式。

你的意思是这样的吗:

<?php
if ($somecondition) {
    ?>
    html code
    <?php
} else {
    ?>
    html code
    <?php
    if ($anothercondition) {
        ?>
        another html code
        <?php
    }
}

为什么不一致地使用括号?在我看来,也给出了更清晰的代码:

<?php if ($somecondition) { ?>
<p style='font-size: 18px;color:#DF5F5F'><strong>An error occurred!</strong></p>
<!-- some more html -->
<?php } else {
  chop($xpath);
  $alot;
  $ofphp;
?>
<ul>
<li>More</li>
<li>HTML</li>
<li>With: <?php echo strtoupper($vaiables); ?></li>
</ul>
<?php }
  if ($anothercondition) {
    if ($andanother) {
      echo '<p>Some HTML</p>';
    }
    else {
      echo '<p>Some other HTML</p>';
    }
  }
?>