如何将额外的csv数据行保存到数组中



我有一个csv上传功能,它保存在我的数据库表中。我想修改它以读取额外的一行数据并相应地格式化数组。

表看起来像这样:

tbody> <<tr>
日期 成本类型1 成本类型2 成本类型3
£50.00£10.00£90.00
01/01/211310
02/01/215412

我想我明白你的问题了,你的意思是说数据不是从第二行开始的,而是第二行包含一个额外的信息,然后数据从第三行开始。

在这种情况下,您需要做的就是解析第二行,就像解析第一行一样,然后存储并使用/from variables中的值。

if ($this->request->data['file']['error'] === UPLOAD_ERR_OK) {
$i          = 1;
$finalArray = [];
if (($file = fopen($this->request->data['file']['tmp_name'], "r")) !== FALSE) {
while (($row = fgetcsv($file, 0, ',', '"')) !== FALSE) {
if ($i == 1) {
$header = $row;
} elseif ($i == 2) {
$priceInfo = $row;
} else {
if (count($header) == count($row)) {
$rowArray = [];
for ($i = 1; $i < count($row); $i++) { // Starting from 1 as we need to skip the first column
$rowArray[] = [
"cost"   => $header[$i],
"demand" => $row[$i],
"total"  => $priceInfo[$i],
"date"  => $row[0],
];
}
$finalArray[] = $rowArray;
} else {
$error_rows[] = $row;
}
}
$i++;
}
fclose($file);
}
}

相关内容

  • 没有找到相关文章

最新更新