Yii - something wrong with if & else if statement in vie


Yii - something wrong with if & else if statement in view file

视图文件中的else-if语句有问题。

我使用的是Yii框架,在我的视图文件中有以下代码。

<select class="formRightPulldown" name="Post[password]">    
<?php foreach($passwordData as $password) :?>
<option value="<?php echo $password['id'] ?>" 
    <?php if(isset($updateErrorPost) && 
             $updateErrorPost['password']==$password['id']){
             echo 'selected';  
          } else if(isset($postUpdate) && 
             $postUpdate['password']==$password['id']){
             echo 'selected'; } ?>
 >
     <?php echo $password['name'] ?>
 </option>
<?php endforeach ;?>
</select>

我相信当"$updateErrorPost"设置为true时,它不应该读取"else-if"之后的代码。

但不知何故,即使"$updateErrorPost"设置为true,它也会在"else-if"之后读取代码,从而将"selected"值添加到多个选项标记中。

有人知道这个问题的原因吗?

我是不是误解了php编程中一些非常基本的东西???

请帮帮我!

提前感谢:)

+++添加+++

它最终将选定的值添加到多个选项标记中,如下所示。。。

<select class="formRightPulldown" name="Post[password]">
    <option value="3">temporary</option>
    <option value="2" selected>Subscriber</option>
    <option value="1" selected>VIP</option>
</select>

在上面的代码中,当第一个if语句为true时,添加第一个选定值,当else-if语句为true时,添加第二个选定值。

为什么若语句为真,代码后若读取???

尝试

<select class="formRightPulldown" name="Post[password]">    
<?php foreach($passwordData as $password) :?>
<option value="<?php echo $password['id'] ?>" 
    <?php if(isset($updateErrorPost) &&  ($updateErrorPost['password']==$password['id'])) {
             echo 'selected';  
          } else if(isset($postUpdate) && ($postUpdate['password']==$password['id'])) {
             echo 'selected';
        } 
    ?>>
     <?php echo $password['name'] ?>
 </option>
<?php endforeach ;?>
</select>

我相信当"$updateErrorPost"设置为true时,它不应该读取"else-if"之后的代码。

不一定-因为那里有&& $updateErrorPost['password']==$password['id'],那么如果$updateErrorPost['password'] != $password['id'] ,则会运行} else if {...

尝试在没有else具有完整条件的情况下制作2个单独的if { },看看它是否有效——这将帮助您找出哪里有逻辑错误。

我想你想做这样的事情:

foreach($passwordData as $password) {
    $selected = "";
    if((isset($updateErrorPost) && $updateErrorPost['password']==$password['id']) ||
        (isset($postUpdate) && $postUpdate['password']==$password['id'])
    ){
        $selected = "selected";
    }
    echo "<option value='{$password['id']}' {$selected}>";
    echo $password['name'];
    echo "</option>";
}

还要确保$updateErrorPost$postUpdate阵列每次都有['password']密钥。否则,您应该通过数组键执行isset()。例如CCD_ 10和另一个。

更新:如果您想在两个条件中的任何一个等于true时准确地回显selected单词,则它应该是正确的。