Периодически копаясь в чужом коде видишь такие перлы, что возникает вопрос как можно назвать человека который это написал. Для примера поставим некоторую абстрактную задачу в переменной $sel храниться значение выбранного элемента списка.
Необходимо вывести список и выделить там выбранный элемент. Вы будете смеяться, но очень часто задач решается в лоб, например, так:
-
<?
-
$sel=1;
-
if ($sel==1) $s1=" selected";
-
if ($sel==2) $s2=" selected";
-
if ($sel==3) $s3=" selected";
-
echo "<option value='1'$s1>Значение 1</option><option value='2'$s2>Значение 2</option><option value='3'$s3>Значение 3</option>";
-
?>
Более «продвинутые» могут написать так:
-
<?
-
$sel=1;
-
echo "<option value='1'".($sel==1?" selected":"").">Значение 1</option><option value='2'".($sel==2?" selected":"").">Значение 2</option><option value='3'".($sel==1?" selected":"").">Значение 3</option>";
-
?>
И прочие вариации. На самом деле все намного проще, если использовать массивы. Использование массивов сделает код более понятным, прозрачным и в конце концов более расширяемым.
Для начало необходимо сформировать сам массив. В php это делается не просто, а очень просто. Для этого используется конструкция array(). Далее с помощью цикла foreach (почему его многие так боятся? Наверное не умеют готовить
) перебираем все элементы и выводим список. На словах все просто, но на практике еще проще:
-
<?
-
$sel=1;
-
$asel=array(1=>'Значение 1', 2=>'Значение 2', 3=>'Значение 3',);
-
foreach($asel as $key=>$value){
-
echo '<option value="'.$key.'"'.($key==$sel?' selected':'').">$value</option>";
-
}
-
?>
Как видите, код получился прозрачный и легко расширяемый. А ведь в примере используется только три элемента. Какой способ использовать Вам решайте сами, если хотите предложить свои варианты, милости просим в комментарии.
