Исходный код
echo "<select id=\"seltel[".$i."]\">";
switch ($data2["PHONE"][$i]["type"]) {
case "Факс":
echo "<option selected>Факс";
echo "<option>Офисный телефон";
echo "<option>Колцентр";
echo "<option>Телефон";
echo "<option>Мобильный телефон";
break;
case "Офисный телефон":
echo "<option>Факс";
echo "<option selected>Офисный телефон";
echo "<option>Колцентр";
echo "<option>Телефон";
echo "<option>Мобильный телефон";
break;
case "Колцентр":
echo "<option>Факс";
echo "<option>Офисный телефон";
echo "<option selected>Колцентр";
echo "<option>Телефон";
echo "<option>Мобильный телефон";
break;
case "Телефон":
echo "<option>Факс";
echo "<option>Офисный телефон";
echo "<option>Колцентр";
echo "<option selected>Телефон";
echo "<option>Мобильный телефон";
break;
case "Мобильный телефон":
echo "<option>Факс";
echo "<option>Офисный телефон";
echo "<option>Колцентр";
echo "<option>Телефон";
echo "<option selected>Мобильный телефон";
break;
};
echo "</select><br/>";
Как можно улучшить исходный код
Разумеется, нет необходимости столько раз повторять вывод всех опций дропдауна, меняя каждый раз только одну маленькую деталь. Представь, что будет твориться в исходном коде, если опций в дропдауне станет хотя бы 20.
Пятикратно повторенный список опций — это пятикратно повторенная реализация этого списка.
Опять же, тут в одном фрагменте кода смешиваются знания об опциях данного конкретного дропдауна, об общих правилах формирования любого дропдауна и о формировании идентификатора дропдауна.
Подобные задачи решаются с помощью функций, массивов и циклов:
function dropdown($id, $options, $selected) {
echo "<select id=\"$id\">";
foreach ($options as $option) {
$selected_attr = $option === $selected ? ' selected' : '';
echo "<option$selected_attr>$option</option>";
}
echo "</select>";
}
const PHONE_TYPE_OPTIONS = ['Факс', 'Офисный телефон', 'Колцентр', 'Телефон', 'Мобильный телефон'];
dropdown("seltel[$i]", PHONE_TYPE_OPTIONS, $data2["PHONE"][$i]["type"]);