1

ビュー ファイルの 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 の場合は 2 番目に選択された値が追加されます。

なぜ if 文は true なのに、else-if の後のコードが読み込まれるのですか?

4

3 に答える 3

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>
于 2013-08-23T13:14:46.673 に答える
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'])、もう1つも。

更新:selected 2 つの条件のいずれかが等しいときに単語を 正確にエコーしたい場合はtrue、正しいはずです。

于 2013-08-23T12:37:40.610 に答える