首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从PHP中具有不同行数和列数的CSV文件中获取数据?

问如何从PHP中具有不同行数和列数的CSV文件中获取数据?
EN

Stack Overflow用户
提问于 2022-09-14 14:37:58
回答 1查看 23关注 0票数 0

我正在创建一个WordPress自定义插件,通过上传一个CSV文件在Woocommerce中导入产品数据。CSV文件包含不同类型的产品(简单、可变、分组、外部),具有自定义属性和大量数据。您可以查看CSV文件。这是我的密码:

代码语言:javascript
复制
<?PHP 

foreach($csv_file as $csv_data){
    //getting csv file name
    $csvFileName = $csv_data["name"];
    $file = fopen($csvFileName, 'r');
    $file_data = fgetcsv($file);
    $fp = file($csvFileName);

    $rows   = array_map('str_getcsv', file($csvFileName));
    $header = array_shift($rows);
    $csv    = array();
    foreach($rows as $row) {
        $csv[] = array_combine($header, $row);
    }
    $assocData = array();

    if( ($handle = fopen( $csvFileName, "r")) !== FALSE) {
        $rowCounter = 0;
        while (($rowData = fgetcsv($handle, 0, ",")) !== FALSE) {
            if( 0 === $rowCounter) {
                $headerRecord = $rowData;
            } else {
                foreach( $rowData as $key => $value) {
                    $assocData[ $rowCounter - 1][ $headerRecord[ $key] ] = $value;  
                }
            }
            $rowCounter++;
        }
        fclose($handle);
    }

//Then iterate $assocData using foreach loop and fetch all keys and values

?>

注意:上面的代码非常适合简单的产品类型,但是当提供上面链接的CSV文件时会抛出一个错误。下面是错误截图:

​

我的目标:我想上传一个CSV文件,其中包含100个简单产品、50个可变产品、20个外部产品和10个分组产品等混合产品类型的数据,然后在Woocommerce中上传所有产品。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-14 16:28:19

PHP为我工作。如果有人遇到同样的情况,他们可以使用这个https://github.com/parsecsv/parsecsv-for-php类:它正确地返回CSV文件数据。

在PHP中打开CSV文件并获得文件名之后,我从代码中添加这个PHP:

代码语言:javascript
复制
<?PHP 

    $csv = new \ParseCsv\Csv();
    $csv->auto($csvFileName);
    $csv_file_data = $csv->data;

?>

然后,我只需要使用foreach循环迭代$csv_file_data变量。

特别感谢@Deigo引用该PHP类.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73718763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档