我的视图文件中的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之后的代码被读取???
答案 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
字,那么它应该是正确的。