Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何正确使用带有<;选项>;标签_Php_Html - Fatal编程技术网

Php 如何正确使用带有<;选项>;标签

Php 如何正确使用带有<;选项>;标签,php,html,Php,Html,所以我有一系列的东西。数组中的项与标记一起放入下拉列表中,没有什么新的或复杂的内容,但下面是(当前工作)代码: <?php foreach($roles as $role): ?> <option value="<?php echo $role['id']; ?>"><?php echo $role['name']; ?></option> <?php endforeach ?> 现在需要做的是,如果$role

所以我有一系列的东西。数组中的项与标记一起放入下拉列表中,没有什么新的或复杂的内容,但下面是(当前工作)代码:

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

当我尝试这样做时,它根本不会向下拉列表中添加任何字段,因此我显然遗漏了一些内容。任何提示都将不胜感激,谢谢


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

假设
角色['name']
从不为空或包含字符串
“0”
(请参阅),则此值将作为

false == "Basic"
它总是
false
。使用
=或编写”
!(角色['name']=“Basic”)

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

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

...
使用


而不是

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

您的
if()
不正确:

if(!$role['name'] == "Basic")
您的意图可能是:

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

怎么样:
if($role['name']!=“Basic”)
?我想
!角色['name']==“Basic”
的计算结果为
false==“Basic”
。顺便说一句,您也可以使用
if
语句的替代样式。$role[“name”]=“Basic”then。。试试echo($role[“name”]=“Basic”)if(!($role['name']==“Basic”){
@Felix,我不知道为什么(可能是因为我累了)但是我没有想到要这么做!=它现在起作用了>>我希望我能把你的答案标记为答案,但这总的来说是很愚蠢的。谢谢,anyhoo。表单中的单词Basic实际上有一个capitol B吗?大写必须是相同的。不过在这个答案上需要注意,我使用的是在我的问题上看到的if语句(而不是if:endif)我有一种奇怪的行为。没有对条件进行检查,直到我决定尝试endif格式,它才开始正常工作。我知道它们应该是等价的,但以防万一一些谷歌用户无意中发现了这个问题。
if(!$role['name'] == "Basic")
if($role['name'] != "Basic")