Эффективный выбор формы PHP для больших наборов опций - PullRequest
1 голос
/ 02 ноября 2011

Мне интересно найти более эффективный способ выбора правильной опции выбора для тега выбора с большим количеством опций.

Следующий урезанный пример работает просто отлично:

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

Однако, если я перечисляю большое количество параметров, таких как часовые пояса, добавление этого кода вручную может быть утомительным. Есть ли лучший способ сделать это?

1 Ответ

1 голос
/ 02 ноября 2011

Если вы можете поместить его в массив / коллекцию, вы можете проверять каждую итерацию.В противном случае, у вас есть, для всех намерений и целей, адекватный способ сделать то же самое.

Возможно, утомительно, но о типичном.

Метод итерации, для справки:

$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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...