有条件显示HTMLtable结构时如何避免冗余
How to avoid redundancy when conditionally displaying HTML table structure
我的代码可以正常工作,但我想知道如何让它更优雅而不是重复整个 <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
循环之外,否则它需要在它里面。这怎么能不重复内容呢?
我觉得你有一种优雅的方式来实现这一点,而无需进一步改变你需要的结构,但是,作为替代方案,你可以根据条件的结果使用一些 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>' : '';
我的代码可以正常工作,但我想知道如何让它更优雅而不是重复整个 <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
循环之外,否则它需要在它里面。这怎么能不重复内容呢?
我觉得你有一种优雅的方式来实现这一点,而无需进一步改变你需要的结构,但是,作为替代方案,你可以根据条件的结果使用一些 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>' : '';