Dovew

您现在的位置是:首页>文档内容页

文档详情

php嵌套循环,foreach遍历二维数组多维数组内嵌套for只执行最后一次循环解决(亲测,巨坑)

doramart 2020-03-08 22:52:52 PHP67540
php嵌套循环,foreach遍历二维数组多维数组内嵌套for只执行最后一次循环解决(亲测,巨坑)

我的需求是遍历一个二维数组

Array
(
    [ZYXDXT] => Array
        (
            [number] => 20
            [score] => 2.5
            [describe] => 
        )

    [DXT] => Array
        (
            [number] => 20
            [score] => 2.5
            [describe] => 
        )

)

开始的代码是这样的,内循环只会执行最后一条

foreach ($args['papersetting']['questype'] as $kk => $vv) {
                    for ($i = 0; $i <= $vv['number']; $i++) {
                        $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, ''); 
                        $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $kk); 
                        $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, '1'); 
                        $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, 'Admin'); 
                        $objPHPExcel->getActiveSheet()->setCellValue('E' . $i, '');
                        $objPHPExcel->getActiveSheet()->setCellValue('F' . $i, '');
                        $objPHPExcel->getActiveSheet()->setCellValue('G' . $i, '');
                        $objPHPExcel->getActiveSheet()->setCellValue('H' . $i, '');
                        $objPHPExcel->getActiveSheet()->setCellValue('I' .$i, '');
                        $objPHPExcel->getActiveSheet()->setCellValue('J' . $i, '');
                        $objPHPExcel->getActiveSheet()->setCellValue('K' . $i, '');
                        $objPHPExcel->getActiveSheet()->setCellValue('L' . $i, '1');
                        $index++;
                    }
}

**出现这样的问题的原因:$i只能用来作为控制循环次数使用,缺少一个变量来改变这个新数组的下标,其实是循环了两次,而生成了两次一样的下标,第二次覆盖了第一次。所以定义一个变量来做新数组的下标即可都显示出来。**


修改后的代码是:

 $index = 3;
            foreach ($args['papersetting']['questype'] as $kk => $vv) {
                print_r($kk . ':' . $vv['number']);
                for ($i = 0; $i <= $vv['number']; $i++) {
                    $objPHPExcel->getActiveSheet()->setCellValue('A' . $index, ''); // 添加数据到工作表
                    $objPHPExcel->getActiveSheet()->setCellValue('B' . $index, $kk); // 添加数据到工作表
                    $objPHPExcel->getActiveSheet()->setCellValue('C' . $index, '1'); // 添加数据到工作表
                    $objPHPExcel->getActiveSheet()->setCellValue('D' . $index, 'Admin'); // 添加数据到工作表
                    $objPHPExcel->getActiveSheet()->setCellValue('E' . $index, ''); // 添加数据到工作表
                    $objPHPExcel->getActiveSheet()->setCellValue('F' . $index, ''); // 添加数据到工作表
                    $objPHPExcel->getActiveSheet()->setCellValue('G' . $index, ''); // 添加数据到工作表
                    $objPHPExcel->getActiveSheet()->setCellValue('H' . $index, ''); // 添加数据到工作表
                    $objPHPExcel->getActiveSheet()->setCellValue('I' . $index, ''); // 添加数据到工作表
                    $objPHPExcel->getActiveSheet()->setCellValue('J' . $index, ''); // 添加数据到工作表
                    $objPHPExcel->getActiveSheet()->setCellValue('K' . $index, ''); // 添加数据到工作表
                    $objPHPExcel->getActiveSheet()->setCellValue('L' . $index, '1'); // 添加数据到工作表
                    $index++;
                }
            }