我的代码可以正常工作,但是我想知道如何使它更优雅,而不是重复全部<tr>
内容。
代码如下:
<?php if($condition == true) { ?>
<tr>
<?php foreach ( $attributes as $attribute_name => $options ) : ?>
<td>
content
</td>
<?php endforeach; ?>
</tr>
<?php } else { ?>
<?php foreach ( $attributes as $attribute_name => $options ) : ?>
<tr>
<td>
content
</td>
</tr>
<?php endforeach; ?>
<?php } ?>
因此,如果条件为true
,则整个<tr>
必须位于foreach
循环之外,否则必须位于其中。不重复内容怎么办?
答案 0 :(得分:0)
我觉得您有一个优雅的方法来实现此目标,而无需进一步更改所需的结构,但是,作为替代方案,您可以根据条件的结果使用一些if,这将使您不再需要重复其中的内容,并帮助您保持DRY标准。
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>';
}
您还可以使用三元(How to write a PHP ternary operator)条件:
echo ($condition) ? '</tr>' : '';
foreach ( $attributes as $attribute_name => $options ) {
echo (!$condition) ? '<tr>' : '<td>';
//content
echo (!$condition) ? '</tr>' : '</td>';
}
echo ($condition) ? '</tr>' : '';