近期在開(kāi)發(fā)過(guò)程中,遇到數(shù)據(jù)渲染表格需要對(duì)指定的幾列進(jìn)行重復(fù)數(shù)據(jù)合并單元格,想了一些方案,最終還是選擇在后臺(tái)進(jìn)行數(shù)據(jù)處理進(jìn)行渲染,
下面貼出實(shí)現(xiàn)代碼:
- 首先需要做一個(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)容了。