有条件地显示HTML表结构时如何避免冗余

时间:2019-04-17 15:11:50

标签: php html if-statement 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循环之外,否则必须位于其中。不重复内容怎么办?

1 个答案:

答案 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>' : '';