Выбрать страницу

Периодически копаясь в чужом коде видишь такие перлы, что возникает вопрос как можно назвать человека который это написал. Для примера поставим некоторую абстрактную задачу в переменной $sel храниться значение выбранного элемента списка.

Необходимо вывести список и выделить там выбранный элемент. Вы будете смеяться, но очень часто задач решается в лоб, например, так:

<?php
$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>";
?>

Более «продвинутые» могут написать так:

<?php
  $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 (почему его многие так боятся? Наверное не умеют готовить :-)) перебираем все элементы и выводим список. На словах все просто, но на практике еще проще:

<?php
$sel=1;
$asel=array(1=>'Значение 1', 2=>'Значение 2', 3=>'Значение 3',);
foreach($asel as $key=>$value){
  echo '<option value="'.$key.'"'.($key==$sel?' selected':'').">$value</option>";
}
?>

Как видите, код получился прозрачный и легко расширяемый. А ведь в примере используется только три элемента. Какой способ использовать Вам решайте сами, если хотите предложить свои варианты, милости просим в комментарии.

Share This