PHP在foreach循环之后获得$n的值

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

我正在使用PHPExcel编写XLS文件。 但我需要一种方法,根据我从数据库得到的结果自动设置单元格的数量。 这就是我使用增量
$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++…。我认为他在单元格排列上有问题,这就是他需要重置数字的原因…但我误解了我认为