Объединить повторяющиеся значения в выпадающем php - PullRequest
0 голосов
/ 07 июля 2019

Я хотел бы объединить дублирующиеся значения, которые есть в моем раскрывающемся списке, я не хочу использовать array_unique, потому что он удаляет мое второе дублирующееся значение. Моя программа работает так, что если вы выберете место, оно соответственно заполнит мой второй выпадающий список. enter image description here

Если вы посмотрите на картинку, при условии, что вы увидите две повторяющиеся записи Rosebank, когда я нажму первый банк роз, он покажет мне только провайдера во втором раскрывающемся списке, но когда я нажму второй банк роз, он покажет мне все провайдеры с местонахождением rosebank. Я хотел бы знать, есть ли способ, которым я могу объединить два дубликата, чтобы он показывал мне всех провайдеров, когда я нажимаю rosebank, и он должен показывать только один rosebank.

Вот мой код без array_unique:

    <label for="select-service">
                <strong>Enter a Location:</strong>
            </label>
            <select class="form-control" id="select-location" class="col-xs-12 col-sm-4 form-control" required>
                <option value="">Select Location</option>



                 <?php


            foreach($appointment_locations as $location) {



             $LocationsArray = explode(",", $location->notes);

              foreach($LocationsArray as $singleLocation):
                 ?>

                <option value="<?=$singleLocation ?>"><?=$singleLocation  ?></option>                  

                <? endforeach;

                 };?>

            </select>

и вот что я пробовал с array_unique, он успешно удаляет дубликаты, но, как я сказал ранее, он покажет мне только одно значение в моем следующем раскрывающемся списке, а не все

  <label for="select-service">
                <strong>Enter a Location:</strong>
            </label>
            <select class="form-control" id="select-location" class="col-xs-12 col-sm-4 form-control" required>
                <option value="">Select Location</option>



                 <?php

          foreach(array_unique($appointment_locations) as $location) {
           // foreach($appointment_locations as $location) {



             $LocationsArray = explode(",", $location->notes);

              foreach($LocationsArray as $singleLocation):
                 ?>

                <option value="<?=$singleLocation ?>"><?=$singleLocation  ?></option>                  

                <? endforeach;

                 };?>

            </select>

вот мой var_dump

                         array(2) {
  [0]=>
  object(stdClass)#28 (2) {
    ["id"]=>
    string(1) "4"
    ["notes"]=>
    string(29) "Randburg, Greenside, Rosebank"
  }
  [1]=>
  object(stdClass)#29 (2) {
    ["id"]=>
    string(1) "8"
    ["notes"]=>
    string(8) "Rosebank"
  }
}

Ответы [ 2 ]

1 голос
/ 09 июля 2019

Это должно сделать это:

Получить уникальные местоположения, сохраняя их в массиве в качестве ключей:

$unique_locations = [];
foreach(array_unique($appointment_locations) as $location) {
    foreach(explode(",", $location->notes) as $singleLocation) {
        $unique_locations[$singleLocation] = 1;
    }
}
?>

Используйте array_keys, array_map и implode, чтобы собрать все это вместе:

...
<select>
    <?= implode('', array_map(function($location) { return "<option value='$location'>$location</option>"; }, array_keys($unique_locations)))  ?>
</select>
...
0 голосов
/ 09 июля 2019

В вашем файле модели используйте $ this-db-> group_by ('colum name');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...