数组在模版表格输出,相同的值合并单元格

  • 比如我原数组是
$arr = [
        ['name'=>'zhangsan','age'=>18,'class'=>1],
        ['name'=>'lisi','age'=>18,'class'=>2],
        ['name'=>'wangwu','age'=>20,'class'=>2],
        ['name'=>'xiaoming','age'=>20,'class'=>4],
        ['name'=>'hello','age'=>20,'class'=>5],
    ];
  • 我要得到的结果是
参数是`age`.png
<?php
    /*********主调函数,判断排序规则,并分发任务*********/
    function main($data, $par) {
        $par==='age' ? $par2='class' : $par2='age';
        $result = pushArr($data, $par);
        $str = '';
        $str.=getStyle($par, $par2);
        $str.=getTable($result, $data, $par2);
        echo $str;
    }
    /*****统计分组总数,各组成员数及排序规则,插入三维数组*****/
    function pushArr($arr, $x, $y='num_') {
        $i = $j = 1;
        $pushed[$y.$arr[0][$x]] = [$arr[0][$x], $j];
        for(; $i<count($arr); $i++) {
            if($arr[$i][$x] == $arr[$i-1][$x]) {
                $pushed[$y.$arr[$i][$x]][1]++; continue;
            }
            $pushed[$y.$arr[$i][$x]]=[$arr[$i][$x], $j];
        }
        return array_values($pushed);
    }
    /********************生成层叠样式表********************/
    function getStyle($par, $par2) {
        return "<style>div{height:100%;display:table;position:relative;left:50%;margin-left:-115px;}table{display:table-cell;vertical-align:middle;text-align:center;}th,td{width:70px;border:1px solid #ccc;background-color:#eee;}
    </style><div><table><tr><th>".$par."</th><th>name</th><th>".$par2."</th></tr>";
    }
    /******************根据统计数据生成表格******************/
    function getTable($result ,$arr, $par2) {
        $str = '';
        for($i=$j=0; $j<count($result); $j++) {
            for($k=0; $k<$result[$j][1]; $k++) {
                $str.="<tr>";
                if (!$k) {
                    $str.="<td rowspan='".$result[$j][1]."'>".$result[$j][0]."</td>";
                }
                $str.="<td>".$arr[$i]['name']."</td><td>".$arr[$i][$par2]."</td></tr>";$i++;
            }
        }
        $str.="</table></div>";
        return $str;
    }
    /*****数据库中取出的有序数组(根据某个字段排序)*****/
    $arr = [
        ['name'=>'zhangsan','age'=>18,'class'=>1],
        ['name'=>'lisi','age'=>18,'class'=>2],
        ['name'=>'wangwu','age'=>20,'class'=>2],
        ['name'=>'xiaoming','age'=>20,'class'=>4],
        ['name'=>'hello','age'=>20,'class'=>5],
    ];

    /********运行程序********/
    main($arr, 'age');
  • 如果我把age,参数改成class,同时还得把3改成2才能看出效果
参数是`class`
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容