Я чувствую, что у вас есть элегантный способ достичь этого без дальнейшего изменения структуры, которая вам нужна, однако, в качестве альтернативы, вы можете использовать несколько if, в зависимости от того, каков результат условия, что избавит от необходимости повторить содержание и помочь вам поддерживать стандарты СУХОЙ.
if($condition) {
echo '<tr>';
}
foreach ( $attributes as $attribute_name => $options ) {
if(!$condition) {
echo '</tr>';
} else {
echo '<td>';
}
//content
if($condition) {
echo '</td>';
} else {
echo '</tr>';
}
}
if($condition) {
echo '</tr>';
}
Вы также можете использовать троичное ( Как написать троичный оператор PHP ) условие:
echo ($condition) ? '</tr>' : '';
foreach ( $attributes as $attribute_name => $options ) {
echo (!$condition) ? '<tr>' : '<td>';
//content
echo (!$condition) ? '</tr>' : '</td>';
}
echo ($condition) ? '</tr>' : '';