PHP數(shù)組分組操作

近期在開(kāi)發(fā)過(guò)程中,遇到數(shù)據(jù)渲染表格需要對(duì)指定的幾列進(jìn)行重復(fù)數(shù)據(jù)合并單元格,想了一些方案,最終還是選擇在后臺(tái)進(jìn)行數(shù)據(jù)處理進(jìn)行渲染,

下面貼出實(shí)現(xiàn)代碼:

  1. 首先需要做一個(gè)多維數(shù)組根據(jù)指定索引字段進(jìn)行分組的一個(gè)算法:
    public static function array_val_chunk($array){
        $result = array();
        foreach ($array as $key => $value) {
            $result[$value['refundId']][] = $value;
        }
        $ret = array();
        foreach ($result as $key => $value) {
            array_push($ret, $value);
        }
        return $ret;
    }

2.分頁(yè)數(shù)據(jù)進(jìn)行調(diào)用該方法

3. 數(shù)據(jù)渲染到視圖,在視圖中進(jìn)行循環(huán)操作,在這里面我使用的是 **Yii **框架:

<table>
<?php foreach ($list as $aid => $l): ?>
    <?php foreach ($l as $k=>$u):?>
    <tr>
        <td>編號(hào)</td>
        <?php if($k == 0):?>   // 這里就是阻斷2條以上的重復(fù)數(shù)據(jù)只顯示第一條的合并表格
        <td rowspan="<?php echo count($l)?>">要合并的數(shù)據(jù)</td>  // 這是表示合對(duì)應(yīng)的重復(fù)數(shù)據(jù)的總數(shù)量
        <?php endif;?>
        <td>操作</td>
    </tr>
    <?php endforeach; ?>
<?php endforeach; ?>
</table>

4. 最終效果:

最終效果圖

上圖展示的就是合并數(shù)據(jù)之后的效果,研究了一天的時(shí)間,最終還是選擇了后臺(tái)進(jìn)行數(shù)據(jù)處理的方式,經(jīng)過(guò)嘗試:在視圖頁(yè)面中進(jìn)行遍歷處理和判斷進(jìn)行指定列的單元格合并是無(wú)法完美實(shí)現(xiàn)的。

目前我只實(shí)現(xiàn)了兩個(gè)重復(fù)數(shù)據(jù)列的合并單元格正確,兩個(gè)以上的單元格合并會(huì)出現(xiàn)格式混亂。如果有人在視圖層實(shí)現(xiàn)了該合并單元格的方式,歡迎來(lái)討論??!

總結(jié):以上就是這篇文章的全部?jī)?nèi)容了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容