组保留的标签 余下为需要删除的标签
unset($oldtag[$key]);
}
}
}
if (!empty($oldtag)) {
$tagids = array();
foreach ($oldtag as $tagid => $tagname) {
$tagids[] = $tagid;
}
well_oldtag_delete($tagids, $tid);
}
$r = well_tag_process($tid, $fid, $create_tag, $tagarr);
return $r;
}
// 删除标签和绑定的主题
function well_oldtag_delete($tagids, $tid)
{
$pagesize = count($tagids);
$arrlist = well_tag_find_by_tagids($tagids, 1, $pagesize);
$delete_tagids = array(); // 删除
$tagids = array();
$n = 0;
foreach ($arrlist as $val) {
++$n;
if (1 == $val['count']) {
// 只有一个主题
$delete_tagids[] = $val['tagid'];
} else {
$tagids[] = $val['tagid'];
}
}
!empty($delete_tagids) and well_tag_delete($delete_tagids);
$arlist = well_tag_thread_find_by_tid($tid, 1, $n);
if ($arlist) {
$ids = array();
foreach ($arlist as $val) $ids[] = $val['id'];
well_tag_thread_delete($ids);
}
!empty($tagids) and well_tag_update($tagids, array('count-' => 1));
}
// 标签数据处理 $arr=新提交的数组 $tagarr=保留的旧标签
function well_tag_process($tid, $fid, $new_tags = array(), $tagarr = array())
{
if (empty($tid)) return '';
// 新标签处理入库
if ($new_tags) {
$threadarr = array();
$tagids = array();
$i = 0;
$size = 5;
$n = count($tagarr);
$n = $n > $size ? $size : $size - $n;
foreach ($new_tags as $name) {
++$i;
$name = trim($name);
$name = stripslashes($name);
$name = strip_tags($name);
$name = str_replace(array(' ', '#', "@", "$", "%", "^", '&', '·', '<', '>', ';', '`', '~', '!', '¥', '……', ';', '?', '?', '-', '—', '_', '=', '+', '.', '{', '}', '|', ':', ':', '、', '/', '。', '[', ']', '【', '】', '‘', ' ', ' ', ' ', ' ', ' '), '', $name);
$name = htmlspecialchars($name, ENT_QUOTES);
if ($name && $i <= $n) {
// 查询标签
$read = well_tag_read_name($name);
if ($read) {
// 存在 count+1
$tagids[] = $read['tagid'];
} else {
// 入库
$arr = array('name' => $name, 'count' => 1);
$tagid = well_tag_create($arr);
FALSE === $tagid and message(-1, lang('create_failed'));
$read = array('tagid' => $tagid, 'name' => $name);
}
$tag_thread = array('tagid' => $read['tagid'], 'tid' => $tid);
$threadarr[] = $tag_thread;
$tagarr[$read['tagid']] = $read['name'];
}
}
!empty($threadarr) and tag_thread_big_insert($threadarr);
!empty($tagids) and well_tag_update($tagids, array('count+' => 1));
}
$json = empty($tagarr) ? '' : xn_json_encode($tagarr);
return $json;
}
?> $v = implode(",", $v);
$temp[] = $v;
}
// 去掉重复的字符串,也就是重复的一维数组
$temp = array_unique($temp);
// 再将拆开的数组重新组装
$output = array();
foreach ($temp as $k => $v) {
if ($stkeep) $k = $starr[$k];
if ($ndformat) {
$temparr = explode(",", $v);
foreach ($temparr as $ndkey => $ndval) $output[$k][$ndarr[$ndkey]] = $ndval;
} else $output[$k] = explode(",", $v);
}
return $output;
}
// 合并二维数组 如重复 值以第一个数组值为准
function array2_merge($array1, $array2, $key = '')
{
if (empty($array1) || empty($array2)) return NULL;
$arr = array();
foreach ($array1 as $k => $v) {
isset($v[$key]) ? $arr[$v[$key]] = array_merge($v, $array2[$k]) : $arr[] = array_merge($v, $array2[$k]);
}
return $arr;
}
/*
* 对二维数组排序 两个数组必须有一个相同的键值
* $array1 需要排序数组
* $array2 按照该数组key排序
* */
function array2_sort_key($array1, $array2, $key = '')
{
if (empty($array1) || empty($array2)) return NULL;
$arr = array();
foreach ($array2 as $k => $v) {
if (isset($v[$key]) && $v[$key] == $array1[$v[$key]][$key]) {
$arr[$v[$key]] = $array1[$v[$key]];
} else {
$arr[] = $v;
}
}
return $arr;
}
?>
数据透视表详解编程频道|福州电脑网
数据透视表详解
系统教程840
更新时间:2026-04-03 20:28:16 2024年6月10日发(作者:)
简单的例子
1.什么是数据透视表及数据透视表的用途
1.数据透视表是用来从EXCEL数据清单、关系数据库文件或OLAP多维数据集中的特
析工具。OLAP多维数据集是包含有OLAP数据的文件。
2. 创建数据透视表时,用户可指定所需的字段、数据透视表的组织形式和要执行的计算类型。
3. 建好数据透视表后,可以对数据透视表重新安排,以便从不同的角度查看数据。数据透视表的名
源于它具有“透视”表格的能力,例如将列首的标题转到行首。这使其成为非常强大的工具。
2.数据透视表中的术语:
轴 ――数据透视表中的一维,例如行、列或页。
数据源 ――从中创建数据透视表的数据清单、表格或多维数据集。
字 段 ――信息的种类,等价于数据清单中的列。
字段标题――描述字段内容的标志。可通过拖动字段标题对数据透视表进行透视。
项 ――组成字段的成员。
透视 ――通过重新确定一个或多个字段的位置来重新安排数据透视表。
汇总函数――EXCEL用来计算表格中数据的值的函数。数值和文本的默认汇总函数
COUNT(计数)。
刷新 ――重新计算数据透视表,以反映目前数据源的状态。
3.简单的例子
数据源
数据源显示了一家小型出版公司的销售数据清单。清单中包括年份、季度、产品编
及销售额,时间跨度为8个季度(2004-2005年)。该公司共有三种销售途径:国内、国外、邮购。
需按几下键,就可以将这张"平庸"的数据清单变成能够提供有用信息的数据透视表,一览无余。安排
透视表有许多种可能的方案,演示1就是其中之一。
演示1:
求和项:(销售额)
(制作过程请见演示1的GIF的动画)
(年份)
2004
(季度)
产品编号
1933/10/18
销售途径
国际
国内
邮购
12
6795
3
8241
4
12484
124846795
4988
3750
37504988
1718
16226
16277
9315
8241
16277
14706
147061933-10-18 汇总
1964/5/27
国际
国内
邮购
1964-5-27 汇总
2012/10/28
国际
国内
邮购
13673
13673
10615
2012-10-28 汇总
2038/12/3
国际
国内
邮购
2038-12-3 汇总
2050/10/12
国际
国内
邮购
2050-10-12 汇总
总计
162261718
15045
9315
19877
10615
-4675
-467515045
17945
6240
6240
34024
17945
46491
13000
66710
19877
13000
16966
16966
11763
11763
67723
(右键点击演示1透视表)任意单元格显示字段列表
1所用到的字段--年份、季度、产品编号、销售途径和销售额--对
安排,只需将这些字段按钮拖至新的位置。就这么简单。
从演示1中很容易找出几乎所有的数据源的信息,唯
以将这些信息也显示出来。相反,如果需要的信息较少而不是更多,
方案很多演示2就是其中之一。图中将销售途径字段从行轴转换到列轴
不同时期的数据,只需简单地从年份和季度字段标题后的下拉列表框
演示2:
(年份)
(季度)
求和项:(销售额)
(产品编号)
12345
23524
41210
50742
55073
总计
(制作过程请见演示2的GIF的动画)
(全部)
(全部)
(销售途径)
国际
16482
32554
18630
39754
26000
133420
国内
13589
9976
3436
30091
35890
92982
邮购
54380
34847
53681
24582
36005
203495
总计
84451
77377
75746
94427
97896
429897
本文发布于:2024-06-10,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据透视字段销售
发布评论