2

如果数组不为空(并且其中有值),那么我想显示表格。
但如果它为空,那么我根本不想显示任何表格代码。

使用向页面附加页脚的 MVC 框架。

避免以下陈述的最佳方法是什么:

<?php 
  if ($users) {
    echo '<table id="tha_table" cellpadding="0" cellspacing="0" width="100%">
            <thead>
              <tr>
                <th>First Name</th>
                <th>Last Name</th>
                <th>Email</th>
             </tr>
          </thead>
         <tbody>';
  } ?>

而且,不想再做一次测试来添加表格页脚。

4

3 回答 3

2

我想我明白你在追求什么......我会将所有 HTML 放在一个单独的文件中,并有条件地包含它。

if(!empty($users)) {
  include "users_table.template";
}

请注意,如果您愿意,模板文件可以包含 php。

于 2012-07-05T23:11:09.520 回答
1

我建议您使用模板系统或任何其他工具将您的 PHP 代码与 HTML 呈现分离。

我所知道的所有模板系统都允许根据布尔值跳过一个块,因此您只需在页面模板中包含(模板的)表,并用您选择的框架用作ifrepeat n times构造的任何内容包围它。

于 2012-07-05T23:10:46.217 回答
1

我总是使用empty()来检查数组是否为空。Empty 还会检查变量是否为空。请注意,如果未设置数组变量,则 empty() 不会引发警告,这可能是可取的,也可能不是可取的。

<?php

   $displayUserTable = !empty($users);

?>

<?php if($displayUserTable): ?>

<table id="tha_table" cellpadding="0" cellspacing="0" width="100%">

<thead>
<tr>
    <th>First Name</th>
    <th>Last Name</th>
    <th>Email</th>
</tr>
</thead>

<tbody>

<?php foreach($users as $user): ?>

<tr>
    <td><?php echo htmlspecialchars($user['firstName']); ?></td>
    <td><?php echo htmlspecialchars($user['lastName']); ?></td>
    <td><?php echo htmlspecialchars($user['emailAddress']); ?></td>
</tr>

<?php endforeach; ?>

</tbody>

</table>

<?php endif; ?>

<?php if($displayUserTable): ?>

    <!-- show footer here... -->

<?php endif; ?>
于 2012-07-05T23:36:46.100 回答