After looking at get_the_terms() again I think I found a better solution:
functions.php
global $reviews_cat_id_brand;
$reviews_cat_id_brand = 158; // using # in case string changes
if( !function_exists('reviews_print_subcat_link') ){
function reviews_print_subcat_link($cat_id){
$items = get_the_terms(get_the_ID(), 'review-category');
$subcat_array = [];
foreach ($items as $item) {
if($item->parent === $cat_id) {
$subcat_array[] = '<a href="'.get_term_link($item).'">'.$item->name.'</a>';
}
}
return $subcat_array;
}
}
review-page.php
$reviews_subcat_links_brand = reviews_print_subcat_link($reviews_cat_id_brand);
if ($reviews_subcat_links_brand) {
echo '<tr><td>Brand:</td>';
echo '<td>'.implode(', ', $reviews_subcat_links_brand).'</td></tr>';
}
There still might be a better solution but this cuts down the looping quite a bit.