PHP高效表单选择大选项集


PHP Efficient Form Select for Large Option Sets

我有兴趣找到一种更有效的方法,在有大量选项的选择标签上选择适当的选择选项。

下面这个简单的例子就可以了:

<?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>

但是,如果我列出了大量的选项,比如时区,那么手工添加这些代码可能会很繁琐。有没有更好的办法?

如果可以将其放在数组/集合中,则可以在每次迭代时进行检查。否则,你所拥有的,无论出于何种意图和目的,都是一种做同样事情的适当方式。

也许很乏味,但很典型。

迭代方法,参考:

$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>