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

如何使用php读取csv文件的特定列,php,csv,Php,Csv,我使用下面的代码用php将csv文件显示为html表。 我的问题是如何只显示csv文件的特定列。例如,我将显示列编号1,5,9,15。 如何修改代码以选择特定字段 先谢谢你,马特 <?php $row = 1; if (($handle = fopen("donors.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($da

我使用下面的代码用php将csv文件显示为html表。 我的问题是如何只显示csv文件的特定列。例如,我将显示列编号1,5,9,15。 如何修改代码以选择特定字段

先谢谢你,马特

 <?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);
 }
 ?>

//在while循环之前
$wantedColumns=数组(1,5,9,15);
// ...
对于($c=0;$c<$num;$c++){
如果(!in_数组($c,$wantedColumns))继续;
// ....
//在while循环之前
$wantedColumns=数组(1,5,9,15);
// ...
对于($c=0;$c<$num;$c++){
如果(!in_数组($c,$wantedColumns))继续;
// ....

将CSV字符串转换为数组:

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

这个解决方案没有考虑行的数量,这个帖子(参见接受的答案):


将CSV字符串转换为数组:

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

这个解决方案没有考虑行的数量,这个帖子(参见接受的答案):


您的csv文件在字段之间有分隔符?您的csv文件在字段之间有分隔符?性能!它工作得很好Steve。另一个提示,请:我想跳过第1行并替换为我自己制作的行(标题)。如何做?提前检查!!
如果($row==1){打印“myheader>”;继续;}
.Perfct!效果很好,Steve。另一个提示:我想跳过第一行,用我自己制作的行(标题)替换。怎么做?提前检查!!
如果($row==1){print'myheader>,继续;}