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

Threeedv

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

该表将如下所示:

日期 费用类型1 费用类型2 费用类型3
£50.00 £10.00 £90.00
21年1月1日 1个 3 10
21/02/01 5 4 12

我节省了每个数字的成本。因此,在保存实际数据之前,我想读取每种类型的成本价格,并将其保存到我的数组中。

$formattedArray = [];
foreach($the_array as $element) {
  $formattedArray[] = [
    "cost" => array_keys($element)[0],
    "demand" => array_values($element)[0],
  ];
}

最终数组应如下所示:

array(
  [0] => Array
    (
        [date] => 01/01/21
        [cost] => Cost Type 1
        [demand] => 1
        [total] => £50.00
    )
[1] => Array
    (
        [date] => 01/01/21
        [cost] => Cost Type 2
        [demand] => 3
        [total] => £10.00
    )
[2] => Array
    (
        [date] => 01/01/21
        [cost] => Cost Type 3
        [demand] => 10
        [total] => £90.00
    )
 )

我的csv上传功能如下:

  if ($this->request->data['file']['error'] === UPLOAD_ERR_OK){
    $i = 1;
    if (($file = fopen($this->request->data['file']['tmp_name'], "r")) !== FALSE) {
      while (($row = fgetcsv($file, 0, ',', '"')) !== FALSE) {
        if ($i == 1){
          $header = $row;
        }else{
          if (count($header) == count($row)){
            $uploads[] = array_combine($header, $row);
          }else{
            $error_rows[] = $row;
          }
        }
        $i++;
      }
      fclose($file);
    }
  }
穆罕默德·阿卜杜勒·穆吉布

我想我收到了您的问题,您的意思是说数据不是从第二行开始,而是第二行包含其他信息,然后数据从第三行开始。

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

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);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将数组保存到 Ruby 中的 csv 字段?

如何将抓取数据保存到CSV文件中?

如何将数组索引数据保存到单独行中的数据库?

如何将数组从 MATLAB 保存到数据库?

将数组中的数据保存到 csv 文件中

熊猫如何将数据框中的所有值保存到csv中?

如何将 .txt 文件中的数据保存到 JavaScript 中的数组?

如何将Ajax中的一行数据保存到数据库?

PHP / Laravel:如何将多维数组保存到数据库中

如何将获取的iCloud数据对象保存到单个数组中?

如何将解析的数据从不同的URL保存到NSXMLParser中的不同数组?

如何将文本文件中的特定行保存到特定数组?

如何将JSON文件保存到csv中

如何将多个记录保存到csv文件中?

如何将ParseInt()的String的值保存到数组中?

如何将多维数组保存到文件或MySQL中

如何将多个记录保存到数组中

如何将数据保存到 JSON 文件中

如何将CGImage保存到Swift中的数据?

如何将 API 数据保存到 Pandas DataFrame 中?

如何将StringIO(pdf)数据保存到文件中

如何将Tensorflow数据集保存到文件中?

如何将JSON数据保存到JavaScript中的变量

如何将数据保存到Rails中的多个表

如何将数据从JSON保存到NodeJS中的变量

如何将api数据保存到本地存储中?

如何解决 IndexError 以及如何将 for 循环中计算的 3 个数据保存到数组/.csv?

如何将PHP数组保存到MySQL数据库,以便可以搜索数据库中的数组?

如何将数组保存到CoreData?