Yii - if& amp; else视图文件中的if语句

时间:2013-08-23 12:25:39

标签: php if-statement yii

我的视图文件中的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-statement为true时添加第二个选择的值。

为什么虽然if-statement为true,但是else-if之后的代码被读取???

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

  

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

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

将会运行$updateErrorPost['password'] != $password['id']

尝试制作2个单独的if { } else,不要{{1}}拥有完整的条件并查看它是否有效 - 这将帮助您找出逻辑错误的位置。

答案 2 :(得分:0)

我想你想做这样的事情:

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()。例如isset($updateErrorPost['password'])和另一个。

已更新:如果您希望在2个条件中的任何一个等于selected时回显true字,那么它应该是正确的。