$out[$a['COLOR']][] = $a['WEIGHT'];
, в котором происходит группировка значений по индексу. Во втором цикле - банальный вывод с предварительным преобразованием структуры массива (значения соединяются через запятую): array_map(function($a){ return join(', ', $a); }, $out)
. <?php
$subject = 'Консультация по статье 18.1 необязательное слово 1245.40 руб.';
$result = preg_match('~(.+?)\d+(?:\.\d+)?\h?руб\.~', $subject, $result) ? $result[1] : '';
echo $result; // Консультация по статье 18.1 необязательное слово