从excel上传时添加数组值

时间:2018-01-19 06:38:18

标签: php mysql arrays excel

您好我将excel表中的值导入MySql数据库。在这之前我需要做一些验证

这是我的Excel工作表 Excel Sheet

以下代码用于验证。

            $item_data = array();
            $this->load->library('excel');
            $objPHPExcel  = PHPExcel_IOFactory::load($input_csv);
            $highestRow = $objPHPExcel->getActiveSheet()->getHighestRow();

            for($i=2;$i<=$highestRow;$i++)
            {
                $col='B';

                $sl_num=$objPHPExcel->getActiveSheet()->getCell('A'.$i)->getValue();
                $Export_Sl_No=$objPHPExcel->getActiveSheet()->getCell($col.''.$i)->getValue();
                $Import_Sl_No=$objPHPExcel->getActiveSheet()->getCell(++$col.''.$i)->getValue();
                $Quantity=$objPHPExcel->getActiveSheet()->getCell(++$col.''.$i)->getValue();
                $UOM=$objPHPExcel->getActiveSheet()->getCell(++$col.''.$i)->getValue();
                $CIF_INR=$objPHPExcel->getActiveSheet()->getCell(++$col.''.$i)->getValue();
                $CIF_USD=$objPHPExcel->getActiveSheet()->getCell(++$col.''.$i)->getValue();


                $item_data[$Import_Sl_No]=$Quantity;

                $importSLNo = $item_data[$Import_Sl_No];


                if( $importSLNo != null){
                    $item_data[$Import_Sl_No]=$importSLNo+$Quantity;

                }
                else {
                    $item_data[$Import_Sl_No]=$Quantity;
                }
            }

            print_r($item_data); 
            exit;

当我执行 print_r($ item_data); 时,我得到类似于此的输出

     Array ( [3] => 724 [4] => 624 )

但我需要的实际输出是

    Array ( [3] => 374 [4] => 355 )  i.e adding the Quantity for same Item_Sl_No

这是一个关于计算的实例

 Item_Sl_No       Quantity
     3            12
     4            43
     4            312
     3            362

对于3,它应该是12 + 362 = 374 对于4,它应该是43 + 312 = 355

所以我需要的输出是

Array ( [3] => 374 [4] => 355 )

任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

试试这个:

$item_data = array();
$this->load->library('excel');
$objPHPExcel  = PHPExcel_IOFactory::load($input_csv);
$highestRow = $objPHPExcel->getActiveSheet()->getHighestRow();

for($i=2;$i<=$highestRow;$i++)
{
    $col='B';

    $sl_num=$objPHPExcel->getActiveSheet()->getCell('A'.$i)->getValue();
    $Export_Sl_No=$objPHPExcel->getActiveSheet()->getCell($col.''.$i)->getValue();
    $Import_Sl_No=trim($objPHPExcel->getActiveSheet()->getCell(++$col.''.$i)->getValue());
    $Quantity=trim($objPHPExcel->getActiveSheet()->getCell(++$col.''.$i)->getValue());
    $UOM=$objPHPExcel->getActiveSheet()->getCell(++$col.''.$i)->getValue();
    $CIF_INR=$objPHPExcel->getActiveSheet()->getCell(++$col.''.$i)->getValue();
    $CIF_USD=$objPHPExcel->getActiveSheet()->getCell(++$col.''.$i)->getValue();

    if(array_key_exists($Import_Sl_No, $item_data))
    {
      $item_data[$Import_Sl_No]=$item_data[$Import_Sl_No]+$Quantity;
    }
    else
    {
          $item_data[$Import_Sl_No]=$Quantity;
    }
}

print_r($item_data);
exit;

出了什么问题?

你有点过分了。这部分:

$item_data[$Import_Sl_No]=$Quantity;

在第二个循环中删除了第一个循环中的数量,您试图临时存储它们,然后才能将它们用作添加下一个数量的基础。

这一部分:

$importSLNo = $item_data[$Import_Sl_No];

基本上使$importSLNo等于$Quantity。所以最后:

$item_data[$Import_Sl_No]=$importSLNo+$Quantity;

基本上是:

$item_data[$Import_Sl_No]=2*$Quantity;

所以你要删除Import_Sl_No的所有数量,除了最后一个循环中的那个,你加倍了。