如何在Codeigniter视图中为结果给出组标题?


How do I give group headings for my results in Codeigniter view?

我的视图中有这样一个列表:

<? foreach($services as $service): ?>
<tr>
  <td><?= $service->name; ?></td>
  <td><?= $service->format; ?></td>
  <td><?= $service->member; ?></td>
  <td><?= $service->non_member; ?></td>
</tr>
<? endforeach; ?>

但是我想根据$service->分组将结果分成几个表;所以它看起来类似于:

<h2><?= $service->grouping; ?></h2>
<? foreach($services as $service): ?>
    <tr>
      <td><?= $service->name; ?></td>
      <td><?= $service->format; ?></td>
      <td><?= $service->member; ?></td>
      <td><?= $service->non_member; ?></td>
      <td><?= $service->grouping; ?></td>
    </tr>
    <? endforeach; ?>
<h2><?= $service->grouping; ?></h2>
<? foreach($services as $service): ?>
        <tr>
          <td><?= $service->name; ?></td>
          <td><?= $service->format; ?></td>
          <td><?= $service->member; ?></td>
          <td><?= $service->non_member; ?></td>
        </tr>
        <? endforeach; ?>

Services等于:

$this->data["services"]= $this->services_model->group_by("grouping")->get_all();

是否有一种方法对结果进行分组,并在下一个表循环之前给每个分组一个标题?

您可以遍历$services并根据$service->grouping分隔值。像这样:

<?php
$groupedServices = array();
foreach($services as $service){
    if(!isset($groupedServices[$service->grouping])){
        $groupedServices[$service->grouping] = array();
    }
    $groupedServices[$service->grouping][] = $service;
}

然后,当您在视图中打印它时,只需使用2个foreach循环。

<?php foreach($groupedServices as $grouping=>$services): ?>
    <tr>
        <td colspan="4"><?=$grouping?></td>
    </tr>
    <?php foreach($services as $service): ?>
        <tr>
          <td><?=$service->name?></td>
          <td><?=$service->format?></td>
          <td><?=$service->member?></td>
          <td><?=$service->non_member?></td>
        </tr>
    <?php endforeach; ?>
<?php endforeach; ?>

你也可以使用array_filter作为回调

例如:

<? foreach($services as array_filter($service,function($value) {return $value->grouping == "GROUP1"; }): ?>
<tr>
  <td><?= $service->name; ?></td>
  <td><?= $service->format; ?></td>
  <td><?= $service->member; ?></td>
  <td><?= $service->non_member; ?></td>
</tr>
<? endforeach; ?>
引用

http://www.php.net/manual/en/function.array-filter.php