【问题标题】:PHP open CSV with ; and make a array with first array items as column namePHP 用 ; 打开 CSV并以第一个数组项作为列名创建一个数组
【发布时间】:2021-10-07 09:37:41
【问题描述】:

我编写了一个代码来读取 csv 文件,但此代码仅适用于 csv ,(逗号)分隔。我想读取一个文件; (点逗号)分开。 此代码仅适用于逗号分隔:

 $csv = array_map("str_getcsv", file("activeproducts_per_customer.csv", FILE_SKIP_EMPTY_LINES));
        $keys = array_shift($csv);

        // Make the CSV as a array
        foreach ($csv as $i => $row) {
            $csv[$i] = array_combine($keys, $row);
        }

        // echo "<pre>";
        // print_r($csv);
        // echo "</pre>";
        return $csv;

【问题讨论】:

    标签: php csv


    【解决方案1】:

    你应该试试这个

    phpspreadsheet

    它易于使用,并且有很多教程可以帮助您, 你可以看这个:phpspreadsheet toturial

    希望能解决你的问题

    【讨论】:

      【解决方案2】:

      我只是想知道你为什么不使用fgetcsv。您可以使用它并根据需要定义分隔符。

      参考:https://www.php.net/manual/en/function.fgetcsv.php

      对于您的情况:

      $csv = [];
      if (($handle = fopen("activeproducts_per_customer.csv", "r")) !== FALSE) {
          while (($data = fgetcsv($handle, 10000, ";")) !== FALSE) {
              $csv[] = $data;
          }
          fclose($handle);
      }
      
      return $csv;
      

      您可以根据需要增加限制。

      【讨论】:

        【解决方案3】:

        试试这个代码设置分隔符

         $csv = array_map(function($v){return str_getcsv($v, ";");}, file("activeproducts_per_customer.csv", FILE_SKIP_EMPTY_LINES));
            $keys = array_shift($csv);
        
            // Make the CSV as a array
            foreach ($csv as $i => $row) {
                $csv[$i] = array_combine($keys, $row);
            }
        
            // echo "<pre>";
            // print_r($csv);
            // echo "</pre>";
            return $csv;
        

        【讨论】:

          【解决方案4】:

          str_getcsv 接受分隔符作为第二个参数。

          这个solution 可能会有所帮助

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-08-21
            • 2017-09-08
            • 2018-07-02
            • 1970-01-01
            • 2011-06-08
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多