Как получить только уникальные значения из массива?

Как я могу вывести только уникальные значения из свойства "REGION" с помощью кода ниже и добавить свойство "CITY" к каждому значению?

```php
$region = [];
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "PREVIEW_TEXT", "PREVIEW_PICTURE", "PROPERTY_*");
$arFilter = Array("IBLOCK_ID"=>1);
$res = CIBlockElement::GetList(Array(), $arFilter, $arSelect);
while ($ob = $res->GetNextElement()) {
    $arFields = $ob->GetFields();
    $arProps = $ob->GetProperties();
    $region[$arProps['REGION']['VALUE']] = $arProps['CITY']['VALUE'];
}
$arResult['OFFICE_REGION'] = $region;

foreach ($arResult['OFFICE_REGION'] as $region => $city):?>
    <option value="<?=$region?>" data-city="<?=$city?>">
        <?=$region?>
    </option>
<?endforeach;?>
```

В этом обновленном коде я использовал ассоциативный массив `$region`, в котором ключом является значение из свойства "REGION", а значением - значение из свойства "CITY". В этом случае все значения "REGION" будут уникальными, и вы сможете добавить свойство "CITY" к каждому значению при выводе их в HTML.
  • 13 февраля 2024 г. 9:18
Ответы на вопрос 2
Для получения только уникальных значений из массива можно использовать функцию `array_unique()`. 

В вашем случае, перед циклом while можно добавить следующую строку кода:

```php
$unique_regions = array_unique($region);
```

Затем вместо использования `$arResult['OFFICE_REGION']` в цикле foreach, вы будете использовать `$unique_regions`:

```php
foreach ($unique_regions as $region => $city):?>
    <option value="<?=$region?>" data-city="<?=$city?>">
        <?=$region?>
    </option>
<?endforeach;?>
```

Таким образом, вы будете выводить только уникальные значения из свойства "REGION" с добавленным свойством "CITY" для каждого значения.
Вы хотите чего-то странного. У вас есть регионы, к региону привязано несколько городов (если бы город был один, то не было бы дублей). Что вы в таком случае хотите видеть в data-city для каждого региона? 
Я понимаю, когда делают наоборот: выводят города и для каждого ещё сохраняют его регион, чтобы потом как-то эти данные обрабатывать. А вот какой сценарий у вас мне совершенно непонятно.

Предположим, туда нужно передать все города региона. Тогда код будет таким:
Похожие вопросы