PHP检查while循环中是否存在值,然后输入值然后中断

时间:2019-02-18 21:31:36

标签: php while-loop phpspreadsheet

我正在使用PHPspreadsheet,并且一切正常。但是,当在某天没有人在工作时生成登录表时,我遇到了一个问题,那就是将我的excel模板上的所有条目都不同步。 问题:如何检查循环中的第一个值(StaffName)-如果为空,则用“无人工作”代替,然后中断循环并允许其继续到下一个循环(星期二)。谢谢代码如下:

$sql="SELECT StaffName, MonStart, MonFInish, MonA FROM print_signin_mon 
where AreaID= '$AreaID'";
$rsSql=db_query($sql,$conn);

$baseRow = 6;
$r=0;

while ($data2 = db_fetch_array($rsSql)){
$row = $baseRow + $r;
$spreadsheet->getActiveSheet()->insertNewRowBefore($row, 1);

$spreadsheet->getActiveSheet()->setCellValue('A' . $row, $r + 1)
    ->setCellValue('B' . $row, $data2['StaffName'])
    ->setCellValue('E' . $row, $data2['MonStart']) 
    ->setCellValue('G' . $row, $data2['MonFInish'])
    ->setCellValue('M' . $row, $data2['MonA']);

    $r= $r+1;
}
$spreadsheet->getActiveSheet()->removeRow($baseRow - 1, 1);

1 个答案:

答案 0 :(得分:0)

经过反复试验,我设法得到了结果。为了实现我的目标,我将“ IF”从循环中删除,然后添加了它。这样,如果没有数据,则以下内容将运行并添加一行,但是即使有数据,它也始终会添加一行。所以不要按照我的要求去做,即循环检查数据并输入值,然后再继续。但这给了我令人满意的结果。感谢安德鲁的投入。

//Monday
$sql="SELECT StaffName, MonStart, MonFInish, MonA FROM print_signin_mon where AreaID= 
'$AreaID'";
$rsSql=db_query($sql,$conn);

                $baseRow = 6;
                $r=0;

                while ($data2 = db_fetch_array($rsSql)){
                     $row = $baseRow + $r;
                     $spreadsheet->getActiveSheet()->insertNewRowBefore($row, 1);
//


                     $spreadsheet->getActiveSheet()->setCellValue('A' . $row, $r + 1)

                          ->setCellValue('B' . $row, $data2['StaffName'])
                          ->setCellValue('E' . $row, $data2['MonStart']) 
                          ->setCellValue('G' . $row, $data2['MonFInish'])
                          ->setCellValue('M' . $row, $data2['MonA'])
                                 ->setCellValue('N' . $row, '..');

                        $r= $r+1;
                    }
    //          $spreadsheet->getActiveSheet()->removeRow($baseRow - 1, 1);
    //if (empty($data2['StaffName'])) {
    if(empty(array_column($rsSql,'StaffName'))) {
                    $row = $baseRow + $r;
                    $spreadsheet->getActiveSheet()->insertNewRowBefore($row, 1);
                    $spreadsheet->getActiveSheet()->setCellValue('A' . $row, $r + 1)
                    ->setCellValue('B' . $row, '');

    //$r++;
    $spreadsheet->getActiveSheet()->removeRow($baseRow - 1, 1);
    //continue;
}
//END Monday