如何正确使用带有<option>标记的if语句?</option>

时间:2011-09-16 16:04:42

标签: php html

所以我所拥有的是一系列事物。数组中的项目放在带有标记的下拉列表中,没有什么新的或复杂的,但这里是(当前工作的)代码:

<?php foreach($roles as $role): ?>
    <option value="<?php echo $role['id']; ?>"><?php echo $role['name']; ?></option>
<?php endforeach ?>

现在需要发生的是,如果$ role ['name']是“Basic”,则不应显示它。我一直在尝试(和谷歌搜索),我没有成功。我认为这不是什么大不了的事。

以下是我正在尝试的内容:

<?php foreach($roles as $role): ?>
    <?php if(!$role['name'] == "Basic") { ?>
    <option value="<?php echo $role['id']; ?>"><?php echo $role['name']; ?></option>
    <?php } ?>
<?php endforeach ?>

当我尝试它根本没有向下拉添加任何字段时,所以我显然在这里遗漏了一些东西。任何提示将不胜感激,谢谢!

4 个答案:

答案 0 :(得分:6)

您的问题出在operator precedence [docs]

!role['name'] == "Basic"

假设role['name']从不为空或包含字符串"0"(请参阅converting to boolean),则会将其评估为

false == "Basic"

总是false。请改用!=或写!(role['name'] == "Basic")

您也可以使用if语句的替代样式:

<?php foreach($roles as $role): ?>
    <?php if($role['name'] != "Basic"): ?>
        ...
    <?php endif ?>
<?php endforeach ?>

答案 1 :(得分:1)

<?php
foreach($roles as $role)
{
if($role['name'] != "Basic")
{
echo '<option value="'.$role['id'].'">'.$role['name'].'</option>';
}
}
?>

答案 2 :(得分:1)

使用

<?php if($role['name'] != "Basic") { ?>

而不是

<?php if(!$role['name'] == "Basic") { ?>

答案 3 :(得分:0)

您的if()不正确:

if(!$role['name'] == "Basic")

你的意图可能就是:

if($role['name'] != "Basic")