gpt4 book ai didi

php - 从 Excel 文件上传时添加数组值

转载 作者:行者123 更新时间:2023-11-29 18:01:04 25 4
gpt4 key购买 nike

您好,我正在将 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 )

任何帮助表示赞赏。

最佳答案

试试这个:

$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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com