PHP在foreach循环后获取$ n的值

时间:2013-06-10 08:20:57

标签: php foreach phpexcel

我正在使用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"]);
    }

3 个答案:

答案 0 :(得分:1)

简单...只需给它一个单独的变量,例如本例中的$ 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"]);
}

答案 1 :(得分:0)

只需将$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"]);
}

答案 2 :(得分:0)

使用static关键字保存变量值,如下所示:

static $n=7;

这将保留以前的值,不会丢失该值。