如果使用sql语句做的话 工作量太大了,于是尝试自己写一个交叉表的类,好二话不说,我们看看代码
<div class="codetitle"><a style="CURSOR: pointer" data="2903" class="copybut" id="copybut2903" onclick="doCopy('code2903')"> 代码如下:
如果使用sql语句做的话 工作量太大了,于是尝试自己写一个交叉表的类,好二话不说,我们看看代码
<div class="codetitle"><a style="CURSOR: pointer" data="2903" class="copybut" id="copybut2903" onclick="doCopy('code2903')"> 代码如下:
';
print_r ( $this->pivotValue );
}
/
渲染为table
/
function RenderToTable()
{
$resault = "\n";
$resault .= "<tr><td>$this->title</td>\n";
foreach ( $this->verticalColumn as $value )
{
$resault .= "<td>$value</td>\n";
}
$resault .= "</tr>\n";
foreach ( $this->horizontalColumn as $i )
{
$resault .= "<tr><td>$i</td>\n";
foreach ( $this->pivotValue [$i] as $value )
{
$resault .= "<td>$value</td>\n";
}
$resault .= "</tr>\n";
}
$resault .= "</table>";
return $resault;
}
/
构造交叉表
@param $data 数据源
@param $topPivot 头栏目字段
@param $leftPivot 左栏目字段
@param $measure 计算量
/
function __construct(array $data,$topPivot,$leftPivot,$measure)
{
$this->data = $data;
$this->leftPivot = $leftPivot;
$this->topPivot = $topPivot;
$this->measure = $measure;
$this->horizontalColumn = array ();
$this->verticalColumn = array ();
$this->InitPivot ();
$this->fillData ();
}
}
重点在于InitPivot方法及fillData方法。
InitPivot里面保证了所有的item都会有值(默认为0)
fillData方法使用选择填充添加的方法,将数据填充入我们装数据的$pivotValue里面。 然后喜欢怎么输出都可以了版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。
相关推荐
如何选择合适的 C++ Web 开发框架?利用 C++ 框架构建高并发 Web 应用的策略用 C++ 框架开发跨平台图形应用程序golang框架中安全编码实践的最佳指南是什么?golang框架与其他语言框架在设计理念上的区别有哪些?C++ 图形框架与其他语言框架的比较C++ 框架与其他 Web 开发框架的对比分析使用 C++ 框架构建大型项目最佳实践C++ 框架如何提高大型项目开发效率C++ 框架中依赖注入的持续集成与部署工具如何与社区协作和贡献到自定义 Golang 框架?C++ 框架在大型项目中如何实现模块化开发使用 C++ 框架开发跨平台 Web 应用C++ 框架在大型项目中的优缺点golang框架在性能上的优势体现在哪些方面?C++ 框架在嵌入式系统内存优化中的优势golang框架在人工智能与机器学习中的作用如何扩展 Golang 框架以支持特定功能?如何利用 Go Modules 和依赖项管理来自定义 Golang 框架?Golang 框架中的性能优化技巧