2010-10-14 114 views
3

我有一个csv文件,我想使用php。 csv中的第一件事是列名。一切都以逗号分隔。解析csv文件php

我希望能够将列名称作为数组名称,并且该列的所有值将位于该数组名称下。所以如果column1下有20行,那么我可以做column1 [0],第一个实例(不是列名)将显示在column1上。

我该怎么做?

回答

9

你想要fgetcsv它会将每个行的作为一个数组。由于您希望将每列放入其自己的数组中,因此可以从该数组中提取元素并将其添加到表示列的新数组中。喜欢的东西:

$col1 = array(); 
while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) { 
    $col1[] = $row[0]; 
} 

或者,你可以阅读使用fgetcsv为二维矩阵整个CSV文件(提供的CSV文件不会太大)为:

$matrix = array(); 
while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) { 
    $matrix[] = $row; 
} 

然后解列你想成为自己的阵列为:

$col1 = array(); 
for($i=0;$i<count($matrix);$i++) { 
    $col1[] = $matrix[0][i]; 
} 
+0

我试过fgetcsv,但它没有把它放到列名称数组中。 – keith 2010-10-14 04:22:34

+0

我已添加更多详情。 – codaddict 2010-10-14 04:24:08

+0

感谢您的回复。这并不是我所希望的。有没有办法让它知道csv中的第一行是列名,并且之后的每行都是行?而逗号分隔每一列的每一列? – keith 2010-10-14 04:53:38