具有内容分组的 PHP 动态表

标签 php

我想做什么

我有一个数组,看起来像这样 -

Array
(
[0] => Array
    (
        [id] => 1
        [date] => 23-09-2015
        [name] => Public Transport
        [group_id] => 1
    )

[1] => Array
    (
        [id] => 2
        [date] => 23-09-2015
        [name] => Parking
        [group_id] => 1
    )

[2] => Array
    (
        [id] => 4
        [date] => 23-09-2015
        [name] => Food
        [group_id] => 2
    )

[3] => Array
    (
        [id] => 3
        [date] => 23-09-2015
        [name] => Fix
        [group_id] => 3
    )

[4] => Array
    (
        [id] => 4
        [date] => 23-09-2015
        [name] => Entertainment
        [group_id] => 3
    )

)

我想在表中列出它,并根据组 id 进行分组

该小组有交通 [1]、住宿 [2] 和津贴 [3]。 [4] 未分组。

表结构需要如下所示。

  ID| Date     | Name             |
  ---------------------------------
  ---------------------------------
  1 |23-09-2015|Public Transport
  2 |23-09-2015|Parking
  ---------------------------------
          TRANSPORTATION
  ---------------------------------
  3 |23-09-2015|Food
  ---------------------------------
          ACCOMMODATION
  ---------------------------------
  4 |23-09-2015|Fix
  ---------------------------------
          ALLOWANCE
  ---------------------------------
  5 |23-09-2015|Entertainment

如您所见,ID 1 和 2 属于交通,3 属于住宿,4 属于津贴,娱乐没有团体。 如果任何组在数组中没有数据,那么它应该显示 NO DATA AVAILABLE

  ---------------------------------
  3 |23-09-2015|Food
  ---------------------------------
          ACCOMMODATION
  ---------------------------------
       No data available
  ---------------------------------
          ALLOWANCE
  ---------------------------------

我尝试了什么

     <?php
     $j = 1;
     foreach ($summary as $list) {
        if ($j != $list['group_id']) {

             if ($j == 1) {
                   $group = 'Transportation';
             } else if ($j == 2) {
                    $group = 'Accomodation';
              } else if ($j == 3) {
                    $group = 'Allowances';
              } else {
                    $group = '';
              }
          ?>

                        <tr class="summary-title">
                            <td colspan="7"><?php echo $group; ?></td>
                        </tr>
                    <?php } ?>
      <tr>

           <td><?php echo $list['id']; ?></td>
           <td><?php echo $list['date']; ?></td>
           <td><?php echo $list['name']; ?></td>
      </tr>
        <?php
            $j = $list['group_id'];
        }
        ?>

数组按照group_id升序排列。组 ID 的值始终为 1、2、3、4。

我的代码有问题

部分有效。但是当 group_id 数组中没有值时,我无法显示 NO DATA AVAILABLE。此外,如果 group_id = 4 在数组中不可用,则它不会在底部设置 ALLOWANCE,因为数组循环在设置值之前完成。

最佳答案

编辑:删除了整个页面,因为它现在变得困惑了。

$summary = array();
$summary[] = array('id'=>1, 'date'=>"23-09-2915", 'name'=>"Public transpor1", 'group_id'=> 1);
$summary[] = array('id'=>2, 'date'=>"24-09-2915", 'name'=>"Public transpor2", 'group_id'=> 3);
$summary[] = array('id'=>3, 'date'=>"25-09-2915", 'name'=>"Public transpor3", 'group_id'=> 1);
$summary[] = array('id'=>4, 'date'=>"26-09-2915", 'name'=>"Public transpor4", 'group_id'=> 2);
$summary[] = array('id'=>5, 'date'=>"27-09-2915", 'name'=>"Public transpor5", 'group_id'=> 1);
$newarray = array('Transportation'=>array(),'Accomodation'=>array(),'Allowances'=>array(),'Not found'=>array());
foreach ($summary as $list) {
    if(isset($list['group_id'])){
         $testid = $list['group_id'];
    }else{
         $testid = 4;
    }
    if ($testid  == 1) {
        $group = 'Transportation';
    } else if ($testid  == 2) {
        $group = 'Accomodation';
    } else if ($testid  == 3) {
        $group = 'Allowances';
    } else {
        $group = 'Not found';
    }
    $newarray[$group][] = $list;
}
echo "<table>";
foreach($newarray as $key => $array){
    echo "<tr><th>".$key."</th></tr>";
    if(count($array) > 0){
        foreach($array as $row){
            echo "<tr><td>".$row['name']."</td></tr>";
        }
    }else{
        echo "<tr><td>Not data</td></tr>";
    }
}
echo "</table>";

现在这应该可以满足您的需求,但说真的,要付出一些努力,哈哈。如果您对自己的问题不太清楚,我不会继续编辑它,直到它完成您想要的为止

关于具有内容分组的 PHP 动态表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32738827/

相关文章:

php 在不使用循环或内置函数的情况下反转字符串

php - 获取特定时区的 PHP 中的当前日期时间

php - 测试 Laravel Controller 时 View 中的 undefined variable

php mysqli 循环太多结果

PHP 单元测试 : Is it possible to test for a Fatal Error?

php - MYSQL fetch_array 创建无限循环;

php - 找出哪个 php 文件在 WordPress 中生成了一行 html 代码的最佳方法

php - 使用 fopen 打开数据库中的文件

javascript - 正则表达式用不同条件替换字符串中的前零两次

php - 如果未找到 PHP 标记,则 PHP 中的 Sublime 代码突出显示不起作用