实现效果:
PHP 版本5.4中不支持array_column函数,需要5.5以上才支持;此函数需要手动实现
/**
*
a
r
r
a
y
为
源
数
组
,
目
前
为
二
维
数
组
∗
array为源数组,目前为二维数组 *
array为源数组,目前为二维数组∗column_key 为指定的键
**/
function _array_column(array $array, $column_key, $index_key=null){
$result = [];
foreach($array as $arr) {
if(!is_array($arr)) continue;
if(is_null($column_key)){
$value = $arr;
}else{
$value = $arr[$column_key];
}
if(!is_null($index_key)){
$key = $arr[$index_key];
$result[$key] = $value;
}else{
$result[] = $value;
}
}
return $result;
}
**PHP 版本5.5以上使用array_column函数**
a.php中引入上面的函数,下面为调用
/**
*array_count_values()为获取每个键的数量
**/
```php
$nums1 = _array_column($rs,'cid');
$nums = array_count_values($nums1);
$nums2 = 0;
//循环去掉重复的cid,得到cid的数量
foreach ($arr1 as $k=>$v){
if($v['cid'] == ''){
$nums2 = $nums2+1;
}
if(in_array($v['cid'],$arr)){
unset($arr1[$k]);
}else{
$arr[$k] = $v['cid'];
}
}
HTML页面输出:
根据cid值得数量得到合并的数量
if(empty($v['cid'])){
echo "<tr>";
echo "<td rowspan='$nums2' align='center' style='text-align: center;'>".$v['dlmc']."</td>";
echo "<td align='center' style='text-align: center;'>".$ztname."</td>";
echo "<td align='center' style='text-align: center;'>".$v['num']."</td>";
echo "<td rowspan='$nums2' align='center' style='text-align: center;'>".$v['allnum']."</td>";
echo "</tr>";
}else{
echo "<tr>";
echo "<td rowspan='".$nums[$v['cid']]."' align='center' style='text-align: center;'>".$v['dlmc']."</td>";
echo "<td align='center' style='text-align: center;'>".$ztname."</td>";
echo "<td align='center' style='text-align: center;'>".$v['num']."</td>";
echo "<td rowspan='".$nums[$v['cid']]."' align='center' style='text-align: center;'>".$v['allnum']."</td>";
echo "</tr>";
}
不需要合并的数量,每个td具体的输出
if($v['cid'] == $v1['cid']){
if($arr1[$k]['zt1'] == $v1['zt1']){
continue;
}else{
echo "<tr>";
echo "<td align='center' style='text-align: center;'>".$ztname."</td>";
echo "<td align='center' style='text-align: center;'>".$v1['num']."</td>";
echo "</tr>";
}
}
若有不明白的rowspan的使用,可以查询下rowspan的使用手册,希望有帮助;
若有疑问,可以私聊联系。。。