如何使用php读取csv文件的特定列

问题描述:

我使用下面的代码来显示一个csv文件作为html表格与php。 我的问题是如何仅显示csv文件的特定列。例如,我会显示列号1,5,9,15。 如何修改代码以选择特定字段?如何使用php读取csv文件的特定列

在此先感谢,马修

<?php 
$row = 1; 
if (($handle = fopen("donors.csv", "r")) !== FALSE) { 
     while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
    $num = count($data); 
    if ($row == 1) { 
     echo '<tr>'; 
    }else{ 
     echo '<tr>'; 
    } 

    for ($c=0; $c < $num; $c++) { 

     if(empty($data[$c])) { 
      $value = "&nbsp;"; 
     }else{ 
      $value = $data[$c]; 
     } 
     if ($row == 1) { 

      echo '<td style="border-top: 1px solid rgb(111,180,224); border-left: 1px solid rgb(111,180,224); border-bottom: 1px solid rgb(111,180,224);" align="left" bgcolor="#0066cc" height="36" valign="middle" ><b><font color="#ffffff" size="2">&nbsp;&nbsp;'.$value.'&nbsp;&nbsp;</font></b></td>'; 
     }else{ 


      echo '<td style=" border-bottom: 1px solid rgb(111,180,224);" sdval="9" sdnum="1040;" align="left" bgcolor="#ffffff" height="25" valign="middle"><font color="#000000" size="2">&nbsp;&nbsp;'.$value.'&nbsp;&nbsp;</font></td>'; 
     } 
    } 

    if ($row == 1) { 
     echo '</tr>'; 
    }else{ 
     echo '</tr>'; 
    } 
    $row++; 
    } 

    echo '</tbody></table>'; 
echo '</center>'; 
    fclose($handle); 
} 
?> 
+0

Your cs v文件在字段之间有分隔符? – ManuParra 2013-03-03 22:41:52

// before your while loop 
$wantedColumns = array(1,5,9,15); 

// ... 

for ($c=0; $c < $num; $c++) { 
    if (!in_array($c,$wantedColumns)) continue; 
    // .... 
+0

Perfct!它效果很好史蒂夫。另一个提示,请:我想跳过第一行,并替换自己制作的一行(标题)。怎么做?提前! – mattew 2013-03-03 23:10:40

+0

'if($ row == 1){print'

​​my​​header>';继续; }'。 – Steve 2013-03-03 23:57:42

把你的CSV字符串为数组:

$data_as_array = explode(',',$data_as_csv); 
echo "This is the value in column #2: ".$data_as_array[1]; 

此解决方案不考虑尚未行数,这个帖子确实(看到接受的答案):
How to create an array from a CSV file using PHP and the fgetcsv function