有条件显示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>' : '';