Запоминать уровни в переменных вне цикла когда текущий не равен им, сверяя каждый последующий строить список.
$mass[$cat['catName']. '|' .$cat['catId']][$cat['subCatName'] . '|' .$cat['subCatId']] - это никуда не годится, уж тогда построить человеческий промежуточный многомерный массив.
|