首页 > 解决方案 > 通过 PHP 的 CSV 重复第一个条目

问题描述

我有以下代码

<?php
if (($handle = fopen("cat.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {           
        if (isset($data[0])) {
            echo $data[0] . "<br>\n";
        }
    }
    fclose($handle);
}
?>

它会打印 CSV 文件中的类别,如下所示:

Main Category

Sub Category1

Sub Category2

Sub Category3

Sub Category4

我需要实现的是让主类别再添加一次代码。我该如何管理它?

Main Category Sub Category1

Main Category Sub Category2 

Main Category Sub Category3

Main Category Sub Category4

在过去的几个小时里,我一直在检查每一个细节,但我遗漏了一些东西。任何帮助表示赞赏

标签: phpcsv

解决方案


假设您的 cat.csv 文件布局如下:

Main Category,Sub Category1,Sub Category2,Sub Category3,Sub Category4

下面的代码应该可以解决问题。如果将每一行的主要类别设为第一列,它将正确打印出来。

<?php
    // Open your CSV File.
    $FileHandle = FOpen("cat.csv", "r");
    // Initiate a counter to count the ROWS of the file.
    $RowCtr = 1;
    // Create an empty variable to hold your prefix ("Main Category").
    $Prefix = "";
    // Verify the file is open.
    If ($FileHandle !== FALSE) {
        // Loop through the CSV file.
        While (($Data = FGetCSV($FileHandle, 1000, ",")) !== FALSE) {
            // Count the number of Columns.
            $ColCtr = COUNT($Data);
            // Add another row the ROW counter.
            $RowCtr++;
            // Loop through each column.
            For ($c = 0; $c < $ColCtr; $c++) {
                // If first iteration, save the value to the prefix for later use.
                If ($c == 0) {
                    $Prefix = $Data[$c];
                    // Echo $Data[$c] . "<br />";   // Uncomment this line to print the Main Category by itself first.
                } Else {
                    // Echo out the prefix with the new values.
                    if (!Empty($Data[$c])) {
                    Echo $Prefix . " " . $Data[$c] . "<br />";
                    }   
                }
            }
        }
        // Close the file.
        FClose($FileHandle);
    } Else {
        // Handle case if file cannot be opened.
    }
?>

这将打印出来

Main Category Sub Category1
Main Category Sub Category2
Main Category Sub Category3
Main Category Sub Category4

如果您的 CSV 如下所示

Main Category,Sub Category1,Sub Category2,Sub Category3,Sub Category4
Main Category2,Sub Category5,Sub Category6,Sub Category7,Sub Category8

它会打印出来

Main Category Sub Category1
Main Category Sub Category2
Main Category Sub Category3
Main Category Sub Category4
Main Category2 Sub Category5
Main Category2 Sub Category6
Main Category2 Sub Category7
Main Category2 Sub Category8

我希望这有帮助!


推荐阅读