2011-11-02 60 views
1

我有兴趣在选择标签上选择适当选择选项并选择大量选项。适用于大型选项集的PHP高效表单选择

下剥离下来例如工作得很好:

<?php 
    $favColor = 'blue'; 
?> 
<form> 
    <label for="favColorSelect">Favorite Color:</label> 
    <select id="favColorSelect" name="favColorSelect"> 
     <option value="">Select a Color</option> 
     <option value="red" <?php if($favColor === 'red'){ echo 'selected'; } ?>>Red</option> 
     <option value="green" <?php if($favColor === 'green'){ echo 'selected'; } ?>>Green</option> 
     <option value="blue" <?php if($favColor === 'blue'){ echo 'selected'; } ?>>Blue</option> 
    <select> 
</form> 

但是,如果我列出了大量的选项,如时区,添加该代码由手可以是很乏味。有没有更好的方法去解决它?

+0

被问了这么多次。检查相关的问题。 –

+0

@AurelioDeRosa我发现了很多与我的示例代码类似的东西,但都没有涉及到另一种更有效的方法。你能链接到一个吗? – jackrugile

+1

我认为Brad总结了他们。 –

回答

1

如果你可以把它放在数组/集合中,你可以检查每次迭代。否则,对于所有意图和目的而言,您拥有的是实现这一目标的适当方式。

也许很乏味,但关于典型。

迭代法,以供参考:

$colors = array('Red','Green','Blue'); 
$selColor = 'red'; 

printf('<selection name="color">'); 
foreach ($colors as $color){ 
    printf('<option value="%s" %s>%s</option>', 
    strtolower($color), $color===$selColor?'selected':'', $color); 
} 
printf('</select>'); 

您可以通过缩短方式的代码(假设你允许使用短手直接输出):

<option value="red" <?= ($favColor==='red'?'selected':''); ?>>Red</option> 
+0

谢谢,这正是我一直在寻找的。 – jackrugile