если правильно понял суть задачи, то я встречал такую реализацию:
у инфоблока есть свойства. коды свойств бывают такого вида group_122 и prop_122_456
пробегаемся по всем свойствам. если в коде свойства есть group то создаем элемент массива с ключом 122, если есть в коде prop, то берем цифры между _ и _(122) и в элемент массима с ключом 122 записываем еще один элемент с ключом 456. соотвественно значениями элементов массивов будут для group - массив с названием свойства и массивом prop'ов, а для prop массив со значение свойства и названием свойства. в итоге получим
название свойства код свойства
Группа 1 group_122
свойство 1 prop_122_456
свойство 2 prop_122_457
Группа 2 group_123
свойство 3 prop_123_458
свойство 4 prop_123_459
$props = array(
'122' => array(
'NAME' => 'Группа 1',
'PROPS' = array(
'456' => array('NAME' => 'свойство 1', 'VALUE' => 'значение свойства 1'),
'457' => array('NAME' => 'свойство 2', 'VALUE' => 'значение свойства 2')
) ,
'123' => array(
'NAME' => 'Группа 2',
'PROPS' = array(
'458' => array('NAME' => 'свойство 3', 'VALUE' => 'значение свойства 3'),
'459' => array('NAME' => 'свойство 4', 'VALUE' => 'значение свойства 4')
)
);