所以我所拥有的是一系列事物。数组中的项目放在带有标记的下拉列表中,没有什么新的或复杂的,但这里是(当前工作的)代码:
<?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 ?>
当我尝试它根本没有向下拉添加任何字段时,所以我显然在这里遗漏了一些东西。任何提示将不胜感激,谢谢!
答案 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")