刷新后保持选中循环中的复选框

Keep checkboxes from loop checked after refresh

我无法在刷新后选中正确的复选框。我看过其他问题,但似乎没有人处理这个复选框是从 for 循环生成的问题(至少我找不到任何东西)。

当我选中一些复选框时,3 个随机复选框,刷新时我有 3 个选中的复选框。然而,这些总是前 3 个,而不是我检查过的确切的。

显然我的代码存在一些我应该解决的问题,但这也让我提出了另一个问题。通过循环生成元素是不好的做法吗?我认为它更好,因为它避免了或多或少重复的行

              $numberOfLanguages = count($languageOptions);
              for ($i = 0; $i < $numberOfLanguages; $i++) {
                $check = '';

                if (empty($_POST['language'][$i])) {
                  $check = '';
                }

                if (!empty($_POST['language'][$i])) {
                  $check = 'checked';
                }

            ?>

                  <li><input type="checkbox" name="language[]" value=" <?php echo $languageOptions[$i] ?>" <?php if($check == 'checked'): ?>checked="checked"<?php endif; ?> /><?php echo $languageOptions[$i] ?></li>

            <?php

              }

你也必须在输入标签的名称中包含行号,否则你将始终得到元素 0、1 和 2。喜欢:

<li><input type="checkbox" name="language[<?php echo $i; ?>]"...

从循环中生成相似的标签可以更轻松地维护代码和查找错误;有时您将不得不这样做,因为内容来自数据库。所以不,这不是坏习惯。