【问题标题】:PHP if/else structure within htmlhtml中的PHP if/else结构
【发布时间】:2016-02-12 10:31:47
【问题描述】:

我试图弄清楚我应该如何构建 if/else 语句。

我理解基本的 if/esle 应该如下;

<?php
if ($a > $b) {
    echo "a is bigger than b";
} elseif ($a == $b) {
    echo "a is equal to b";
} else {
    echo "a is smaller than b";
}
?>

我不确定如何在我当前的语句中实现这个逻辑。我认为因为 php 混合在 html 中,这让我感到困惑:/

我确定这是非常错误的,但有人可以告诉我应该如何构建它吗?

  <form role="form">
    <div class="btn-group" data-toggle="buttons">
      <label class="btn btn-default <?php if ($status == '1' ) echo 'active btn-success' ; ?>">
        <input type="radio" name="status" id="option1" value="1" autocomplete="off"> Active
      </label>
      <label class="btn btn-default <?php elseif ($status == '2' ) echo 'active btn-warning' ; ?>">
        <input type="radio" name="status" id="option2" value="2" autocomplete="off"> Inactive
      </label>
      <label class="btn btn-default <?php else ($status == '3') echo 'active btn-danger' ; ?>">
        <input type="radio" name="status" id="option3" value="3" autocomplete="off"> Not Found
      </label>
    </div>
  </form>

我在 NetBeans 中看到的错误是;

语法错误:意外 elseif

我可以或应该只在每个标签上使用 if 语句吗?

【问题讨论】:

  • 为什么elseif & else。在每个标签中使用if
  • 不完全确定,但您可能想在 if / elseif / else 语句中使用开/关括号,它可能会解决您的错误。

标签: php html if-statement


【解决方案1】:

Ravi Hirani has already answered the question,但我想我会解释一下您收到错误的原因。

原因是您没有使用正确的语法。如果我们去掉 PHP 并去掉 HTML,你可能会明白为什么:

if ($status == '1' ) echo 'active btn-success' ;
elseif ($status == '2' ) echo 'active btn-warning' ;
else ($status == '3') echo 'active btn-danger' ;

如您所见,您只是缺少括号来完成 if 语句所需的语法。它应该看起来像(没有标记):

if ($status == '1') {
    echo 'active btn-success';
} elseif ($status == '2') {
    echo 'active btn-warning';
} else ($status == '3') {
    echo 'active btn-danger';
}

现在,当包含 HTML 时,会变得非常混乱!尤其是在尝试跨多行标记跟踪左括号和右括号时。所以我通常在使用标记时使用替代语法,只是为了让它更整洁一点!可以在这里找到:

http://php.net/manual/en/control-structures.alternative-syntax.php

您只需用替代字符替换括号即可:

if ($status == '1'):
    echo 'active btn-success';
elseif ($status == '2'):
    echo 'active btn-warning';
else ($status == '3'):
    echo 'active btn-danger';
endif;

【讨论】:

  • 感谢您的解释!我认为替代角色是我想要达到的。这似乎是最好的方法,因为我有很多 html :)
  • 没问题,很高兴能帮上忙! :)
  • @RaviHirani:我试试,哈哈
【解决方案2】:

为什么是elseelseif。任何一个都只会设置你的条件。

<form role="form">
    <div class="btn-group" data-toggle="buttons">
      <label class="btn btn-default <?php if ($status == '1' ) echo 'active btn-success' ; ?>">
        <input type="radio" name="status" id="option1" value="1" autocomplete="off"> Active
      </label>
      <label class="btn btn-default <?php if ($status == '2' ) echo 'active btn-warning' ; ?>">
        <input type="radio" name="status" id="option2" value="2" autocomplete="off"> Inactive
      </label>
      <label class="btn btn-default <?php if ($status == '3') echo 'active btn-danger' ; ?>">
        <input type="radio" name="status" id="option3" value="3" autocomplete="off"> Not Found
      </label>
    </div>
</form>

【讨论】:

    【解决方案3】:

    在每个标签中仅使用If 条件。

    <form role="form">
        <div class="btn-group" data-toggle="buttons">
          <label class="btn btn-default <?php if ($status == '1' ) echo 'active btn-success' ; ?>">
            <input type="radio" name="status" id="option1" value="1" autocomplete="off"> Active
          </label>
          <label class="btn btn-default <?php if ($status == '2' ) echo 'active btn-warning' ; ?>">
            <input type="radio" name="status" id="option2" value="2" autocomplete="off"> Inactive
          </label>
          <label class="btn btn-default <?php if ($status == '3') echo 'active btn-danger' ; ?>">
            <input type="radio" name="status" id="option3" value="3" autocomplete="off"> Not Found
          </label>
        </div>
    </form>
    

    您也可以通过以下方式进行,但不推荐。

    <?php 
    $var = '';  
    if ($status == '1' ){
      $var = 'active btn-success';
    }elseif($status == '2'){
      $var = 'active btn-success';
    }else{
      $var = 'active btn-danger';
    }    
    ?>
    
    <form role="form">
        <div class="btn-group" data-toggle="buttons">
          <label class="btn btn-default <?php echo $var; ?>">
            <input type="radio" name="status" id="option1" value="1" autocomplete="off"> Active
          </label>
          <label class="btn btn-default <?php echo $var; ?>">
            <input type="radio" name="status" id="option2" value="2" autocomplete="off"> Inactive
          </label>
          <label class="btn btn-default <?php echo $var; ?>">
            <input type="radio" name="status" id="option3" value="3" autocomplete="off"> Not Found
          </label>
        </div>
    </form>
    

    希望对你有帮助:)

    【讨论】:

      【解决方案4】:

      对此稍有不同的方法可能是ternary operator,它可以像这样使用:

      <form role="form">
          <div class="btn-group" data-toggle="buttons">
            <label class="btn btn-default <?php echo ($status == '1' ) ? 'active btn-success' : ''; ?>">
              <input type="radio" name="status" id="option1" value="1" autocomplete="off"> Active
            </label>
            <label class="btn btn-default <?php echo ($status == '2' ) ? 'active btn-warning' : ''; ?>">
              <input type="radio" name="status" id="option2" value="2" autocomplete="off"> Inactive
            </label>
            <label class="btn btn-default <?php echo ($status == '3' ) ? 'active btn-danger' : ''; ?>">
              <input type="radio" name="status" id="option3" value="3" autocomplete="off"> Not Found
            </label>
          </div>
      </form>
      

      三元运算符基本上是一个快速的if / else。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-08
        • 2015-07-07
        • 1970-01-01
        • 2013-08-17
        • 2021-03-07
        • 1970-01-01
        相关资源
        最近更新 更多