基于php数组字段创建新表

时间:2015-03-12 09:45:45

标签: php arrays

我有一个来自数据库查询的字段数组。

我想找到基于$ office_id字段中唯一值创建多个表的最佳解决方案。

所以基本上,我尝试过使用foreach循环,存储office_id并在每次循环时检查它是否唯一,然后关闭最后一个表html,启动一个新表html等。

我讨厌这个解决方案,因为这意味着数组必须按office_id排序,而且非常难看。

任何人都可以使用更干净,更智能的代码建议更好的方法。我需要对阵列进行某种转换吗?是否有更好的方法来提取独特的office_id字段?

我还想将office_id用作每个表的标题,以便输出看起来类似于以下内容:

office_id One
-----------------------------------
settle |  price |  Lister |  date  
-----------------------------------
       |        |         |

office_id Two
-----------------------------------
settle |  price |  Lister |  date  
-----------------------------------
       |        |         |

这就是我的(丑陋),当我输入时,我意识到我错过了关闭标签:

<?php $thisOffice = ""; ?>  
<?php foreach ($fees as $fee): ?>
<?php if($thisOffice !== $fee->office_id) : ?>  
<table class="table table-striped table-condensed">
<tr>
<th>Settlement</th>
<th>Office</th>
<th>Price</th>
<th>Lister</th>
<th>Sold</th>
</tr>
<?php endif; ?>
<tr>
    <td> <?= $fee->settle_date ?></td>
    <td> <?= $fee->office_id ?></td>
    <td> <?= $fee->price ?></td>
    <td> <?= $fee->lister ?></td>
    <td> <?= $fee->sale_date ?></td>
</tr>
<?php $thisOffice = $fee->office_id; ?>
<?php endforeach; ?>

1 个答案:

答案 0 :(得分:1)

如果将阵列分成三个维度,它将使您的生活更轻松:

$offices[$id][] = $fee;

这样你可以使用:

foreach ($offices as $id => $office) {
    foreach ($office as $fee) {
        // Build table
    }
}