Как написать цикл перебора чекбоксов ещё короче?

Рабочий код перебора чекбоксов:
$tegsAct = [];//активные теги
        $tegsAll = [];//все теги
        while($enum_fields21 = $dbEl->GetNext()){
          $tegsAct[] = $enum_fields21["TEGI_VALUE"];
        }
        while($enum_fields = $property_enums->GetNext()){
          $tegsAll[] =  array("ID" => $enum_fields["ID"]," VALUE" => $enum_fields["VALUE"]);
        }
        foreach($tegsAll as $id => $name){
          echo "<input type='checkbox' name='TEGI[]' value='{$id["ID"]}'";
          for ($i=0; $i < count($tegsAct); $i++)
          {
            if($name["VALUE"]==$tegsAct[$i]){
              echo "checked";
            }
          }
          echo ">{$name["VALUE"]}<br>";
        }


Хотелось бы либо всё сильнее сократить, либо сократить последнюю часть:
foreach($tegsAll as $id => $name){
          echo "<input type='checkbox' name='TEGI[]' value='{$id["ID"]}'";
          for ($i=0; $i < count($tegsAct); $i++)
          {
            if($name["VALUE"]==$tegsAct[$i]){
              echo "checked";
            }
          }
          echo ">{$name["VALUE"]}<br>";
        }

//нерабочий вариант но хотелось бы привести к такому виду
foreach($tegsAll as $id => $name){
          for ($i=0; $i < count($tegsAct); $i++)
          {
            if($name["VALUE"]==$tegsAct[$i]){
              $checked = "checked";
            } else {
              $checked = "";
            }
          }
          echo "<input type='checkbox' name='TEGI[]' value='{$id["ID"]}' {$checked}>{$name["VALUE"]}<br>";
        }
  • Вопрос задан
  • 251 просмотр
Решения вопроса 1
Stalker_RED
@Stalker_RED
Немножко сократил
$tagsAct = [];//активные теги
$tagsAll = [];//все теги

while($enum_fields21 = $dbEl->GetNext()){
  $tagsAct[] = $enum_fields21["TEGI_VALUE"];
}
while($enum_fields = $property_enums->GetNext()){
  $tagsAll[$enum_fields["ID"]] = $enum_fields["VALUE"];
}
foreach($tagsAll as $id => $name){
  $checked = in_array($name["VALUE"], $tagsAct) ? ' checked' : '';
  echo "<input type=\"checkbox\" name=\"TEGI[]\" value=\"$id\"$checked>$name<br>";
}


Вроде бы даже читабельнее стало. Но вы-же понимаете, что на самом деле это "лапша" и так делать нехорошо?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы