douzen1880 2018-03-08 16:11
浏览 9
已采纳

PHP:创建有条件的表

I have array like this in php:

    $arr = [
    [
        "group": 1,
        "name": John
    ],
    [
        "group": 1,
        "name": Luke
    ],
    [
        "group": 1,
        "name": Peter
    ],
    [
        "group": 2,
        "name": Pia
    ]
]

expected output in html table:

GROUP | NAME
------|-----
      | John
  1   | Luke
      | Peter 
------|-----
  2   | Pia

I attempted to work around the foreach but i cant figure it out. Below is the last code i tried:

<table>
    <tr>
        <th>GROUP</th>
        <th>NAME</th>
    </tr>
    <tbody>
        <?php $group = ''; ?>
        <?php foreach($results AS $result) : ?>
            <tr>
                <td>
                    <?php if($group !== $result['group']): ?>
                        <?= $result['group'] ?>
                    <?php endif; ?>
                </td>
                <td>
                    <ul>
                        <li><?= $result['name'] ?></li>
                    </ul>
                </td>
            </tr>
            <?php $group = $result['group']; ?>
        <?php endforeach; ?>
    </tbody>
</table>

but the result is:

GROUP | NAME
------|-----
   1  | John
------|-----
      | Luke
------|-----
      | Peter 
------|-----
  2   | Pi

I need to show it as the about expected output.

Please help, thanks

  • 写回答

2条回答 默认 最新

  • doupa9062 2018-03-08 17:16
    关注

    You need to make group first like below

    <?php
        $results = [
            ["group"=> 1,"name"=> "John"],
            ["group"=> 1,"name"=> "Luke"],
            ["group"=> 1,"name"=> "Peter"],
            ["group"=> 2,"name"=> "Pia"]
        ];
        $newArr = array();
        foreach ($results as $key => $value) {
            $newArr[$value["group"]][] = $value["name"];
        }
    ?>
    <table border="1">
        <thead>
          <tr><th>GROUP</th><th>NAME</th></tr>
        </thead>
        <tbody>
        <?php foreach($newArr as $group=>$values){ ?>
            <tr>
                <td><?php echo $group;?></td>
                <td>
                    <ul style="margin: 5px;">
                    <?php 
                        foreach($values as $key=>$name){
                            echo "<li>$name</li>";
                        }
                    ?>
                    </ul>
                </td>
            </tr>
        <?php } ?>
        </tbody>
    </table>
    

    Which will give output,

    enter image description here

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上