您好我将excel表中的值导入MySql数据库。在这之前我需要做一些验证
以下代码用于验证。
$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 )
任何帮助表示赞赏。
答案 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
的所有数量,除了最后一个循环中的那个,你加倍了。