PHP在foreach循环之后获得$n的值
我正在使用PHPExcel编写XLS文件。 但我需要一种方法,根据我从数据库得到的结果自动设置单元格的数量。 这就是我使用增量PHP在foreach循环之后获得$n的值,php,foreach,phpexcel,Php,Foreach,Phpexcel,我正在使用PHPExcel编写XLS文件。 但我需要一种方法,根据我从数据库得到的结果自动设置单元格的数量。 这就是我使用增量$n的原因。 问题是,在第一个foreach中,所有操作都有效,但在第二个$n中,前一个的值丢失,并覆盖了前一个单元格。 如何将递增的$n的值保持在foreach循环之外? 这就是我到目前为止所做的: $objPHPExcel->getActiveSheet()->SetCellValue('A7', 'Tot number unique visits per
$n
的原因。
问题是,在第一个foreach
中,所有操作都有效,但在第二个$n
中,前一个的值丢失,并覆盖了前一个单元格。
如何将递增的$n
的值保持在foreach
循环之外?
这就是我到目前为止所做的:
$objPHPExcel->getActiveSheet()->SetCellValue('A7', 'Tot number unique visits per device:');
$n=7;
foreach ($visits_by_device as $key) {
$n = $n++;
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$n, $key["device_type"]);
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$n, $key["tot"]);
}
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$n, 'Tot number Unique Visits per Date:');
foreach ($visits_by_date as $key) {
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$n, $key["date"]);
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$n, $key["tot"]);
}
简单…只需给它一个单独的变量,如本例中的$k
$objPHPExcel->getActiveSheet()->SetCellValue('A7', 'Tot number unique visits per device:');
$n=7;
$k=$n
foreach ($visits_by_device as $key) {
$n = $n++;
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$n, $key["device_type"]);
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$n, $key["tot"]);
}
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$n, 'Tot number Unique Visits per Date:');
foreach ($visits_by_date as $key) {
$k = $k++;
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$k, $key["date"]);
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$k, $key["tot"]);
}
只需将$n++
添加到第二个循环的开头,即可继续计算$n
$n = 7;
foreach ($visits_by_device as $key) {
$n++;
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$n, $key["device_type"]);
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$n, $key["tot"]);
}
$n = 7; add this line if you want to count from 7 again. Remove it to continue counting.
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$n, 'Tot number Unique Visits per Date:');
foreach ($visits_by_date as $key) {
$n++;
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$n, $key["date"]);
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$n, $key["tot"]);
}
使用static
关键字将变量的值保持如下:
static $n=7;
这将保留上一个值,并且不会丢失该值。只需在启动第二个foreach之前增加$n++
。没有理由在上面的代码中,$n
会丢失它的值。@Rikesh回答解决了问题:D谢谢!哦,我想我完全误解了你…那就忽略我的回答吧。。。lol@CarloGiovannelli将$n++
放在第二个foreach上面如何解决您的问题?第二个foreach将在每个循环中覆盖相同的键。。例如:第一个循环运行8次,然后您将$n
设置为9,然后第二个循环将只影响单元格A9
和B9
。我可能误解了,但他不希望第二个循环也从7开始吗??这样细胞就匹配了?如果是这样的话,他应该把$n=7代码>在第二个for循环上方。是的,但是$n来自数据库,所以他不知道值,因此我将$n分配给$k,并使用$k,在下面的代码中…我会将db中的值放入一个变量,如start_num
或其他什么,并使用它来分配$n
变量。好吧……我想你以前就有过它,正如我刚才读到的他的评论,看起来你的方式,是他想要的方式…第二个循环中的$n++…。我认为他在单元格排列上有问题,这就是他需要重置数字的原因…但我误解了我认为