话不多说上干活
public function downloadMatchDataAction()
{
// 要下载的信息
$user = new UserModel();
$sql = "SELECT id,name,age,sex ORDER BY age DESC LIMIT 0,100";
$list = $user->query($sql);//这里可以理解为查出来的二维数组
$th = ['编号','姓名','年龄','性别'];
$datas = array();//定义空数组,用来装自己想要的数据格式
foreach($list as $key => $val){
$datas[$key][] = $val["id"];
$datas[$key][] = $val["name"];
$datas[$key][] = $val["age"];
$datas[$key][] = $val["sex"];
}
//解释一下这个循环,$datas为二维数组,$key为$list的键,将$list里面的键变为$datas里面的键最后再给这个键附上我刚才查询的值
$this->outCsvTableAction('match',$th,$datas);//这里注意,指的是调用累内该方法
exit;//我这里我选择了退出因为导出并下载我已经完成了,做完以后还需要做记录请自行修改。
}
/**
name你要导出的文件名
n
a
m
e
你
要
导
出
的
文
件
名
th 表头表标题
datas重构后的数组∗∗/publicfunctionoutCsvTableAction(
d
a
t
a
s
重
构
后
的
数
组
∗
∗
/
p
u
b
l
i
c
f
u
n
c
t
i
o
n
o
u
t
C
s
v
T
a
b
l
e
A
c
t
i
o
n
(
name,
th,
t
h
,
datas){
header(“Content-type:text/csv”);
header(“Content-Disposition:attachment;filename=” . date(‘Ymd’) . ‘_’.
name.′.csv′);header(‘Cache−Control:must−revalidate,post−check=0,pre−check=0′);header(‘Expires:0′);header(‘Pragma:public′);
n
a
m
e
.
′
.
c
s
v
′
)
;
h
e
a
d
e
r
(
‘
C
a
c
h
e
−
C
o
n
t
r
o
l
:
m
u
s
t
−
r
e
v
a
l
i
d
a
t
e
,
p
o
s
t
−
c
h
e
c
k
=
0
,
p
r
e
−
c
h
e
c
k
=
0
′
)
;
h
e
a
d
e
r
(
‘
E
x
p
i
r
e
s
:
0
′
)
;
h
e
a
d
e
r
(
‘
P
r
a
g
m
a
:
p
u
b
l
i
c
′
)
;
str = ”;
foreach (
thas
t
h
a
s
value) {
str.=iconv(′utf−8′,′gb2312′,
s
t
r
.
=
i
c
o
n
v
(
′
u
t
f
−
8
′
,
′
g
b
2312
′
,
value).’,’;
//解释下这个函数 : iconv(输入的字符集,输出的字符集,要转换的字符串)
}
str=rtrim(
s
t
r
=
r
t
r
i
m
(
str,’,’);
str.=“\n”;foreach(
s
t
r
.
=
“
\n
”
;
f
o
r
e
a
c
h
(
datas as
v)$str.=“\t”;foreach($vas$v1)$str.=iconv("utf−8","gb2312",$v1).′,′;$str=rtrim($str,′,′);$str.=“\n”;die(
v
)
$
s
t
r
.
=
“
\t
”
;
f
o
r
e
a
c
h
(
$
v
a
s
$
v
1
)
$
s
t
r
.
=
i
c
o
n
v
(
"
u
t
f
−
8
"
,
"
g
b
2312
"
,
$
v
1
)
.
′
,
′
;
$
s
t
r
=
r
t
r
i
m
(
$
s
t
r
,
′
,
′
)
;
$
s
t
r
.
=
“
\n
”
;
d
i
e
(
str);
}
以上