我有两个三元运算符,如下所示:
1. (($_POST['movietype'] == $row1['id'])?'selected="selected"':'');
2. (($row1['id'] == $row['type'])?'selected="selected"':'');下面是我的输出:
echo '<option value="'.$row1['id'].'"'.[HERE].'>'.$row1['label'].'</option>';我的问题是如何将这两个三元运算符组合到HERE部分中?
发布于 2015-04-08 21:47:07
这只是两个条件,如果你使用in_array(),你甚至可以将它们组合在一个条件中。
所以就像这样:
$class = ($_POST['movietype'] == $row1['id'] || $row1['id'] == $row['type'])
? 'class="selected"' : '';或者:
$class = in_array($row1['id'], array($_POST['movietype'], $row1['id']))
? 'class="selected"' : '';和:
echo '<option value="'.$row1['id'].'" '.$class.'>'.$row1['label'].'</option>';发布于 2015-04-08 21:50:23
按照相同的代码,您可以执行以下操作:
$isSelected = ($_POST['movietype'] == $row1['id'] || $row1['id'] == $row['type'])
? 'selected="selected"' : '';然后,可以将[HERE]部分替换为以下内容:
echo '<option value="'.$row1['id'].'" '.$isSelected.'>'.$row1['label'].'</option>';顺便说一下,我建议您使用If...Else。
发布于 2015-04-08 22:00:12
我建议创建一个函数,您可以向该函数传递不限数量的值,从而触发要选择的选项
/**
* @param id
* @param matches...
**/
function selectOpt() {
$args = func_get_args();
$id = array_shift($args);
foreach($args as $a) {
if($a === $id) {
return 'selected="selected"';
}
}
return '';
}然后你可以这样叫它:
echo '<option value="'.$row1['id'].'"'. selectOpt($row1['id'], $_POST['movietype'], $row['type']) .'>'.$row1['label'].'</option>';https://stackoverflow.com/questions/29516269
复制相似问题