首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP三元运算符

PHP三元运算符
EN

Stack Overflow用户
提问于 2015-04-08 21:37:48
回答 3查看 207关注 0票数 2

我有两个三元运算符,如下所示:

代码语言:javascript
复制
1. (($_POST['movietype'] == $row1['id'])?'selected="selected"':'');
2. (($row1['id'] == $row['type'])?'selected="selected"':'');

下面是我的输出:

代码语言:javascript
复制
echo '<option value="'.$row1['id'].'"'.[HERE].'>'.$row1['label'].'</option>';

我的问题是如何将这两个三元运算符组合到HERE部分中?

EN

回答 3

Stack Overflow用户

发布于 2015-04-08 21:47:07

这只是两个条件,如果你使用in_array(),你甚至可以将它们组合在一个条件中。

所以就像这样:

代码语言:javascript
复制
$class = ($_POST['movietype'] == $row1['id'] || $row1['id'] == $row['type'])
            ? 'class="selected"' : '';

或者:

代码语言:javascript
复制
$class = in_array($row1['id'], array($_POST['movietype'], $row1['id']))
            ? 'class="selected"' : '';

和:

代码语言:javascript
复制
echo '<option value="'.$row1['id'].'" '.$class.'>'.$row1['label'].'</option>';
票数 0
EN

Stack Overflow用户

发布于 2015-04-08 21:50:23

按照相同的代码,您可以执行以下操作:

代码语言:javascript
复制
    $isSelected = ($_POST['movietype'] == $row1['id'] || $row1['id'] == $row['type']) 
                   ? 'selected="selected"' : '';

然后,可以将[HERE]部分替换为以下内容:

代码语言:javascript
复制
echo '<option value="'.$row1['id'].'" '.$isSelected.'>'.$row1['label'].'</option>';

顺便说一下,我建议您使用If...Else

票数 0
EN

Stack Overflow用户

发布于 2015-04-08 22:00:12

我建议创建一个函数,您可以向该函数传递不限数量的值,从而触发要选择的选项

代码语言:javascript
复制
/**
* @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 '';
}

然后你可以这样叫它:

代码语言:javascript
复制
echo '<option value="'.$row1['id'].'"'. selectOpt($row1['id'], $_POST['movietype'], $row['type']) .'>'.$row1['label'].'</option>';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29516269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档