[GROUP_ID] => Array
(
[0] => Array
(
[GROUP_ID] => 1
[DATE_ACTIVE_FROM] =>
[DATE_ACTIVE_TO] =>
)
[1] => Array
(
[GROUP_ID] => 3
[DATE_ACTIVE_FROM] =>
[DATE_ACTIVE_TO] =>
)
[2] => Array
(
[GROUP_ID] => 4
[DATE_ACTIVE_FROM] =>
[DATE_ACTIVE_TO] =>
)
[3] => Array
(
[GROUP_ID] => 1
[DATE_ACTIVE_FROM] =>
[DATE_ACTIVE_TO] =>
)
)
#^/list/(\\d+)/[^\/]*$#
empty($arGroup['DATE_ACTIVE_TO']) || strtotime($arGroup['DATE_ACTIVE_TO']) >= time()
in_array($arGroup['GROUP_ID'], $arAimGroups) && (empty($arGroup['DATE_ACTIVE_TO']) || strtotime($arGroup['DATE_ACTIVE_TO']) >= time())
empty($arGroup['DATE_ACTIVE_TO']) || strtotime($arGroup['DATE_ACTIVE_TO']) >= time()
$arSort = [];
$arOrder = [];
$arFilter = [
'ACTIVE' => 'Y', // работаем только с активными пользователями
'GROUPS_ID' => [3,4,5] // список групп, чьих членов касается данная процедура (можно не использовать, тогда для всех)
];
$obUsers = CUser::GetList($arSort, $order, $filter);
while ($arUser = $obUsers->Fetch()) {
$arGroups_db = CUser::GetUserGroupList($arUser['ID']);
$counter = 0;
$arGroups = [];
while ($arGroup = $arGroups_db->Fetch()){
$counter++;
if (empty($arGroup['DATE_ACTIVE_TO']) || strtotime($arGroup['DATE_ACTIVE_TO']) >= time()) {
$arGroups[] = $arGroup;
}
}
if (count($arGroups) !== $counter) {
CUser::SetUserGroup($arUser['ID'], $arGroups);
}
}
while ($arGroup = $obGroups->Fetch() && !$isAdmin) {
if ($maxGroupId < $arGroup['GROUP_ID']) {
$maxGroupId = $arGroup['GROUP_ID'];
}
if ($arGroup['GROUP_ID'] == 1) {
$isAdmin = true;
}
}
while ($arGroup = $obGroups->Fetch() && !$isAdmin) {
if (empty($arGroup['DATE_ACTIVE_TO']) || strtotime($arGroup['DATE_ACTIVE_TO']) >= time()) {
if ($maxGroupId < $arGroup['GROUP_ID']) {
$maxGroupId = $arGroup['GROUP_ID'];
}
if ($arGroup['GROUP_ID'] == 1) {
$isAdmin = true;
}
}
}
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$obGroups = CUser::GetUserGroupList(1);
$maxGroupId = 0;
$isAdmin = false;
while ($arGroup = $obGroups->Fetch() && !$isAdmin) {
if ($maxGroupId < $arGroup['GROUP_ID']) {
$maxGroupId = $arGroup['GROUP_ID'];
}
if ($arGroup['GROUP_ID'] == 1) {
$isAdmin = true;
}
}
if (!$isAdmin) {
$obMaxGroup = CGroup::GetByID($maxGroupId);
if ($arMaxGroup = $obMaxGroup->Fetch()) {
echo $arMaxGroup['NAME'];
}
} else {
echo 'Админ!';
}
$arMaxGroup['NAME'] . ' c ID=' . $arMaxGroup['ID']
Сначала бежишь по нему и в каждом элементе массива ищешь свой GROUP_ID. И только пробежавшись, записываешь в переменную группу, которая самая преоритетная.
А, уже, её ищешь в своих if-ах, которым лучше стать swich-ем, но, не мне тебя учить.