我有一个csv上传功能,它保存在我的数据库表中。我想修改它以读取额外的一行数据并相应地格式化数组。
表看起来像这样:
日期 | 成本类型1 | 成本类型2 | 成本类型3 | £50.00 | £10.00 | £90.00 |
---|---|---|---|
01/01/21 | 1 | 3 | 10 |
02/01/21 | 5 | 4 | 12 |
我想我明白你的问题了,你的意思是说数据不是从第二行开始的,而是第二行包含一个额外的信息,然后数据从第三行开始。
在这种情况下,您需要做的就是解析第二行,就像解析第一行一样,然后存储并使用/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);
}
}