2016-02-12 76 views
2

我想弄清楚我应该如何构造一个if/else语句。PHP中的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中看到的错误是;

Syntax error: unexpected elseif

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

+1

为什么'elseif'&'else'。在每个标签中使用“if”。 –

+0

不完全确定,但您可能想使用if/elseif/else语句的开放/关闭括号,它可能会修复您的错误。 – Epodax

回答

5

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'; 
} 

现在,当包含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; 
+1

感谢您的解释!我认为替代角色是我想要了解的。这似乎是最好的办法,因为我有很多html :) –

+0

没问题,很高兴我可以帮助! :) – Othyn

+0

@Othyn:你有少女回答更可爱;) –

2

在每个标签中只使用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> 

希望它会帮助你:)

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> 
1

稍微不同的方法,这可能是一个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。