Как я могу удалить дубликаты из моего цикла foreach

#php

#php

Вопрос:

У меня есть этот цикл foreach, который я использую внутри select для получения параметров из моей базы данных. но я получаю много дубликатов. Это мой код.

  <select  id="selectid" name="selectOrdre_nummer" class="select custom-select col-md-1" onchange="callthis();">
  <option default disabled>-- select an option --</option>
  <option value=""> None </option>
<!---------------------------------------------------------------------->
    <?php foreach ($csv->getGodOrdre_nummerTable() as $select) { ?>
      <option class="option" value="<?= $select->Ordre_nummer ?>"><?= $select->Ordre_nummer ?></option>
    <?php } ?>
<!------------------------------------------------------------------------>
</select>
  

Это попытка, которую я пробовал, но безуспешно:

 <script>$("select .option").val(function(idx, val) {
  $(this).siblings('[value="'  val  '"]').remove();
});
</script>
  

Также пробовал делать это :

 <?php foreach ($csv->getGodVarenummerTable() as $select) {
          $varenummer = json_decode(json_encode($select->Varenummer), True);
          array_unique($varenummer);
?>
          <option class="option" value="<?= $varenummer?>"><?= $varenummer ?></option>
<?php } ?>
  

Приветствуется любая помощь!

Комментарии:

1. array_unique ?

2. Используйте group by в запросе, покажите нам свой запрос

3. Если вы получаете параметры из своей базы данных, почему вы не используете DISTINCT в своем запросе?

4. Большое спасибо, подойдет!

5. Ваша попытка использовать array_unique изначально была сфокусирована на неправильном элементе данных — это не $ select, содержащий дубликаты, а результат $ csv-> getGodVarenummerTable()

Ответ №1:

Вы можете использовать встроенную функцию array_unique для создания нового массива только уникальных значений, по существу удаляя ваши дубликаты.

 <select  id="selectid" name="selectOrdre_nummer" class="select custom-select col-md-1" onchange="callthis();">
  <option default disabled>-- select an option --</option>
  <option value=""> None </option>
<!---------------------------------------------------------------------->
    $unique_array = array_unique($csv->getGodOrdre_nummerTable());
    <?php foreach ($unique_array as $select) { ?>
      <option class="option" value="<?= $select->Ordre_nummer ?>"><?= $select->Ordre_nummer ?></option>
    <?php } ?>
<!------------------------------------------------------------------------>
</select>
  

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

Ответ №2:

Не знал о том, что DISTINCT Работает как во сне. вот ответ!

 public function getGodOrdre_nummerTable()
    {
        return $this->db->toList("SELECT DISTINCT  Ordre_nummer FROM `Angle`");
    }