0

我正在尝试使用 php 读取 CSV 文件。我总是遇到这样的情况,我知道数据处于某种结构中。但是,我有一个 CSV,其中每一行可能有不同数量的项目。

这是一个小例子:

121, 32, 28, 23, 43   
322, 43, 43, 44  
435, 23, 43  
343, 56, 56, 678  

我想在我想要输出的地方输出一些东西:
第 1 行中的第一个数字,第 1 行中的第二个数字,第 1 行中的第三个数字 - 换行符
第 1 行中的第一个数字,第 1 行中的第二个数字,第 4 行中的数字1 - 换行符
第 1 行的第一个数字,第 1 行的第二个数字,第 1 行的第 5 个数字 - 换行符

第 2 行中的第一个数字,第 2 行中的第二个数字,第 2 行中的第 3 个数字 - 换行符
第 1 行中的第一个数字,第 1 行中的第二个数字,第 2 行中的第 4 个数字 - 换行符

等等........

我只是很难弄清楚如何嵌套这些循环。

4

2 回答 2

0

根据您发布的内容,我想出了这个模型。我希望它有所帮助。

$csv = array(
    array(121, 32, 28, 23, 43),
    array(322, 43, 43, 44),
    array(435, 23, 43),
    array(343, 56, 56, 678)
);

foreach($csv as $row){
    foreach($row as $key=>$column){
        if($key<2){
            continue;
        }
        echo $row[0].', '.$row[1].', '.$column.'<br>';
    }

}
于 2012-11-16T04:43:14.210 回答
0

我不明白有什么问题。

您可以将该文件读入二维数组。

$file = "file.csv";
$data_arr = array();

if (($handle = fopen($file, 'r')) !== FALSE)
{

    $rownum = 1; // change to 0 to start counting from 0

    while (($row = fgetcsv($handle, 0, ",")) !== FALSE)
    {

        $cellnum = 1; // change to 0 to start counting from 0

        foreach($row as $cell)
        {
            // optional charset conversion
            // $cell = iconv("windows-1250", "UTF-8", $cell);

            $data_arr[rownum][cellnum] = $cell;
            $cellnum++;
        }
        $rownum++;
    }
    fclose($handle); // close file

}
else
{
    echo "Error. Cant open ".$file;
}
于 2012-11-16T04:43:31.673 回答