Php 比较值后返回选择控件的选定项

Php 比较值后返回选择控件的选定项,php,Php,我试图在不使用模板框架的情况下从html中删除尽可能多的代码,我不确定为什么没有返回'selected'来定义选择框选项的'selected'$row\u status填充选项ok,并且$status已分配值 我在这方面做得太差了吗 <select id='status'> <option>Please Select</option> <?php while($row_status = mysqli_fetch_assoc($

我试图在不使用模板框架的情况下从html中删除尽可能多的代码,我不确定为什么没有返回
'selected'
来定义选择框选项的
'selected'
$row\u status
填充选项ok,并且
$status
已分配值

我在这方面做得太差了吗

    <select id='status'>
     <option>Please Select</option>
     <?php while($row_status = mysqli_fetch_assoc($results_status)): ?>
     <option <?php sel($row_status['list_value'],$status)?> >  <?php echo $row_status['list_value'] ?>  </option>
     <?php endwhile; ?>
    </select>

    function sel($rs, $status){
       if ($rs==$status){
          return "selected";
       }
    }

请选择
功能选择($rs$status){
如果($rs==$status){
返回“已选择”;
}
}

您只返回一个值,不回显它

<?php echo sel(...); ?>

通过使用
sprintf()
并通过其参数传递条件和值,可以简化代码:

while ($row_status = mysqli_fetch_assoc($results_status)) {
    echo sprintf('<option%s>%s</option>',
        $row_status['list_value'] == $status ? ' selected' : '',
        htmlspecialchars($row_status['list_value'], ENT_QUOTES, 'UTF-8')
    );
}
while($row\u status=mysqli\u fetch\u assoc($results\u status)){
回显sprintf(“%s”,
$row\U status['list\U value']==$status?'selected':'',
htmlspecialchars($row_status['list_value'],ENT_引号,'UTF-8')
);
}

我还添加了正确的HTML转义。

非常好的反馈,谢谢。当试图将html和php代码块分开时,使用sprintf()替代方案是否会弄乱局面?我知道这个主题每个人都有“个人”偏好,如果和什么时候做模板,我决定通过在所有东西周围使用php标记来达到中间点……尽管不可能有其他人会做设计工作……但请记住,我不知道我的设计将是什么!我认为代码清晰应该是指导原则。如果你的设计师需要理解HTML,我会选择一个模板引擎,比如PHPTAL。
while ($row_status = mysqli_fetch_assoc($results_status)) {
    echo sprintf('<option%s>%s</option>',
        $row_status['list_value'] == $status ? ' selected' : '',
        htmlspecialchars($row_status['list_value'], ENT_QUOTES, 'UTF-8')
    );
}