作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我正在将 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 )
任何帮助表示赞赏。
最佳答案
试试这个:
$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
的所有数量,并且将其加倍。
关于php - 从 Excel 文件上传时添加数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48335433/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!