在PHPExcel中,我用到了一个循环,代码以下
for($i=4;$i<$num;$i++)
{
if($i>30)
{
$j="A".chr($i+34)."$m";
}else{
$j=chr($i+61)."$m";
}
$objPHPExcel->getActiveSheet()->setCellValue("$j","$headerRow[$i]");
}
当$i>30的时候,$j这个变量就会获取不到,是怎么回事呢?
这段代码中,php
当$i 在[4, 30]区间执行的运算是$i+61,结果范围在[65, 91];函数
当$i 在[31, +∞)区间执行的运算是$i+34,结果范围在[65, +∞);spa
chr是php函数,用来将整数转换成字符,65对应的ascii码是 A,91对应的是[,我猜这里本意是要把结果范围控制在[65, 90]区间,这个区间的话恰好对应ascii码的[A, Z]区间。code
基于这个假设,建议你把代码改为下面的样子试试:htm
1
2
3
4
5
6
7
8
9
10
11
|
for
(
$i
=4;
$i
<$
num;
$i
++)
{
if
(
$i
< 30)
{
$j
=
chr
(
$i
+ 61).
"$m"
;
}
else
if
(
$i
< 56)
{
$j
=
"A"
.
chr
(
$i
+ 35).
"$m"
;
}
}
|
附:ASCII码对照表:http://baike.baidu.com/view/15482.htmci