2014-11-24 96 views
0

我有一个csv文件,其中标题行是在第1行而不是第0行我怎么能在这种情况下转换csv。我见过转换csv文件的版本好,其中标题行是行[0]使用PHP如何转换csv文件

function csv_to_array($filename='', $delimiter=',') 
{ 
if(!file_exists($filename) || !is_readable($filename)) 
    return FALSE; 

$header = NULL; 
$data = array(); 
if (($handle = fopen($filename, 'r')) !== FALSE) 
{ 
    while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) 
    { 
     if(!$header) 
      $header = $row; 
     else 
      $data[] = array_combine($header, $row); 
    } 
    fclose($handle); 
} 
return $data; 
} 

请有人可以帮助我在[1]行是标题行的情况。

回答

1

你可以这样做:

  function csv_to_array($filename='', $delimiter=',') 
      { 
      if(!file_exists($filename) || !is_readable($filename)) 
       return FALSE; 

      $header = NULL; 
      $data = array(); 
      if (($handle = fopen($filename, 'r')) !== FALSE) 
      { 
       $i=0; 
       while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) 
       { 
        if($i==0) 
        { 
         $i++; 
         continue; //SKIP FIRST ROW 
        } 
        if(!$header) 
         $header = $row; 
        else 
         $data[] = array_combine($header, $row); 
       } 
       fclose($handle); 
      } 
      return $data; 
      } 
+0

喜欢它实际上,是我在想什么,谢谢 – cghrmauritius 2014-11-24 12:22:59

0

可以使用fgetcsv并将结果存储到一个数组这样

$file = fopen("path/to/csv","r"); 
$list=array(); 

//saving in list 
while ($row=fgetcsv($file)) { 
    $list[]=$row; 
} 

,那么你可以循环开始$ I = 2

1

出于兴趣运行,如果头是在第1行,第0行是什么?它是空白的吗?

在任何情况下:

$i = 0; 
while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) { 
    $i++; 
    if ($i == 1) { 
     continue; // Or do something else? 
    } elseif ($i == 2) { 
     $header = $row; // Get the headers on row 1 
    } else { 
     $data[] = $row; // Get the data on row 2 and above 
    } 
} 

或者:

while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) { 
    $data[] = $row; 
} 

var_dump($data[1]); // This is the header 

for ($i = 2, $j = count($data); $i < $j; $i++) { 
    var_dump($data[ $i ]); // Each row of data 
} 
+0

使用$ i ++之前继续,否则$我将永远等于0 – 2014-11-24 12:30:05

+0

那么发现,谢谢 – MrCarrot 2014-11-24 13:20:44