2009-12-10 48 views
0

我很困惑如何在php中读取csv文件(只有前4个字段)并排除其余的文件。在php中读取csv文件的前5个字段

Sno,Name,Ph,Add,PO 
1,Bob,0102,Suit22,89 
2,Pop,2343,Room2,78 

我只是想先读3周的Fileds并跳转到下一个数据。想不通怎么办通过fgetcsv

有什么帮助吗?

感谢,

回答

2

我为你添加到样品fgetcsv代码中的注释:是啊

$row = 1; 
if (($handle = fopen("test.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $num = count($data); 
     echo "<p> $num fields in line $row: <br /></p>\n"; 
     // iterate over each column here 
     for ($c=0; $c < $num; $c++) { 
      // handle column data here 
      echo $data[$c] . "<br />\n"; 
      // exit the loop after 3rd column parsed 
      if ($c == 2) break; 
     } 
     ++$row; 
    } 
    fclose($handle); 
} 
+0

非常感谢。 – JPro 2009-12-10 12:17:14

+0

如果我需要将这些数据插入到mysql中,你能告诉我在哪里插入语句吗? – JPro 2009-12-10 12:48:10

1

这里有一个办法做到这一点没有fgetcsv功能:

$lines = file('data.csv'); 
$linecount = count($lines); 
for ($i = 1; $i < $linecount; $i++){ 
    $fields = explode(',', $lines[$i]); 
    $sno = $fields[0]; 
    $name = $fields[1]; 
    $ph = $fields[2]; 
    $add = $fields[3]; 
} 
+0

,但这假定文件是正确的(没有少于4个字段的行)。我知道NOTICE级错误并不是那么重要,但无论如何。特别是在调试时,最好摆脱通知。 我建议加if(count($ fields)<4)//错误句柄//对于一行 – 2009-12-10 11:37:20

+1

我只是在展示这个概念。没有必要使用坚韧的防弹来进行示范。他要求四个领域,所以我给了他四个领域。 – brianreavis 2009-12-10 11:41:50